Oleg Nesterov
232fb69a53
fbcon_set_all_vcs: fix kernel crash when switching the rotated consoles
echo 3 >> /sys/class/graphics/fbcon/rotate_all, then switch to another
console. Result:
BUG: unable to handle kernel paging request at ffffc20005d00000
IP: [bitfill_aligned+149/265] bitfill_aligned+0x95/0x109
PGD 7e228067 PUD 7e229067 PMD 7bc1f067 PTE 0
Oops: 0002 [1] SMP
CPU 1
Modules linked in: [...a lot...]
Pid: 10, comm: events/1 Not tainted 2.6.26.5-45.fc9.x86_64 #1
RIP: 0010:[bitfill_aligned+149/265] [bitfill_aligned+149/265] bitfill_aligned+0x95/0x109
RSP: 0018:ffff81007d811bc8 EFLAGS: 00010216
RAX: ffffc20005d00000 RBX: 0000000000000000 RCX: 0000000000000400
RDX: 0000000000000000 RSI: ffffc20005d00000 RDI: ffffffffffffffff
RBP: ffff81007d811be0 R08: 0000000000000400 R09: 0000000000000040
R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000010000
R13: ffffffff811632f0 R14: 0000000000000006 R15: ffff81007cb85400
FS: 0000000000000000(0000) GS:ffff81007e004780(0000) knlGS:0000000000000000
CS: 0010 DS: 0018 ES: 0018 CR0: 000000008005003b
CR2: ffffc20005d00000 CR3: 0000000000201000 CR4: 00000000000006e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Process events/1 (pid: 10, threadinfo ffff81007d810000, task ffff81007d808000)
Stack: ffff81007c9d75a0 0000000000000000 0000000000000000 ffff81007d811c80
ffffffff81163a61 ffff810000000000 ffffffff8115f9c8 0000001000000000
0000000100aaaaaa 000000007cd0d4a0 fffffd8a00000800 0001000000000000
Call Trace:
[cfb_fillrect+523/798] cfb_fillrect+0x20b/0x31e
[soft_cursor+416/436] ? soft_cursor+0x1a0/0x1b4
[ccw_clear_margins+205/263] ccw_clear_margins+0xcd/0x107
[fbcon_clear_margins+59/61] fbcon_clear_margins+0x3b/0x3d
[fbcon_switch+1291/1466] fbcon_switch+0x50b/0x5ba
[redraw_screen+261/481] redraw_screen+0x105/0x1e1
[ccw_cursor+0/1869] ? ccw_cursor+0x0/0x74d
[complete_change_console+48/190] complete_change_console+0x30/0xbe
[change_console+115/120] change_console+0x73/0x78
[console_callback+0/292] ? console_callback+0x0/0x124
[console_callback+97/292] console_callback+0x61/0x124
[schedule_delayed_work+25/30] ? schedule_delayed_work+0x19/0x1e
[run_workqueue+139/282] run_workqueue+0x8b/0x11a
[worker_thread+221/238] worker_thread+0xdd/0xee
[autoremove_wake_function+0/56] ? autoremove_wake_function+0x0/0x38
[worker_thread+0/238] ? worker_thread+0x0/0xee
[kthread+73/118] kthread+0x49/0x76
[child_rip+10/18] child_rip+0xa/0x12
[kthread+0/118] ? kthread+0x0/0x76
[child_rip+0/18] ? child_rip+0x0/0x12
Because fbcon_set_all_vcs()->FBCON_SWAP() uses display->rotate == 0 instead
of fbcon_ops->rotate, and vc_resize() has no effect because it is called with
new_cols/rows == ->vc_cols/rows.
Tested on 2.6.26.5-45.fc9.x86_64, but
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git seems to
have the same problem.
Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Cc: Krzysztof Helt <krzysztof.h1@poczta.fm>
Cc: <stable@kernel.org> [2.6.27.x, 2.6.26.x, maybe 2.6.25.x]
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
2008-10-16 11:21:45 -07:00 |
| .. |
|
aty
|
radeonfb: accelerate imageblit and other improvements
|
2008-10-16 11:21:44 -07:00 |
|
backlight
|
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
|
2008-10-13 17:13:56 +01:00 |
|
console
|
fbcon_set_all_vcs: fix kernel crash when switching the rotated consoles
|
2008-10-16 11:21:45 -07:00 |
|
display
|
fbdev: fix race in device_create
|
2008-05-20 13:31:53 -07:00 |
|
geode
|
lxfb: fix console blanking
|
2008-07-24 10:47:40 -07:00 |
|
i810
|
i810fb: fix console switch regression
|
2008-03-19 18:53:36 -07:00 |
|
intelfb
|
intelfb: support 945GME (as used in ASUS Eee 901)
|
2008-10-16 11:21:42 -07:00 |
|
kyro
|
|
|
|
logo
|
video/logo: add support for Blackfin/Linux logo for framebuffer console
|
2008-05-14 19:11:14 -07:00 |
|
matrox
|
matroxfb: support G200eV chip
|
2008-10-16 11:21:45 -07:00 |
|
mbx
|
mbxfb: fix incorrect argument type
|
2008-03-10 18:01:20 -07:00 |
|
nvidia
|
video: replace remaining __FUNCTION__ occurrences
|
2008-04-28 08:58:42 -07:00 |
|
omap
|
omap drivers: switch to standard GPIO calls
|
2008-10-16 11:21:40 -07:00 |
|
pnx4008
|
[ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach
|
2008-08-07 09:55:48 +01:00 |
|
riva
|
video: replace remaining __FUNCTION__ occurrences
|
2008-04-28 08:58:42 -07:00 |
|
savage
|
savagefb: speed up the I2C bus
|
2008-04-28 08:58:38 -07:00 |
|
sis
|
video/sis/: remove compat code
|
2008-07-24 10:47:37 -07:00 |
|
vermilion
|
removed unused #include <linux/version.h>'s
|
2008-08-23 12:14:12 -07:00 |
|
via
|
viafb: via_utility.c, via_utility.h, vt1636.c, vt1636.h
|
2008-10-16 11:21:42 -07:00 |
|
68328fb.c
|
|
|
|
acornfb.c
|
[ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach
|
2008-08-07 09:55:48 +01:00 |
|
acornfb.h
|
|
|
|
amba-clcd.c
|
|
|
|
amifb.c
|
drivers/video/amifb.c cleanups
|
2008-07-24 10:47:40 -07:00 |
|
arcfb.c
|
|
|
|
arkfb.c
|
removed unused #include <linux/version.h>'s
|
2008-08-23 12:14:12 -07:00 |
|
asiliantfb.c
|
|
|
|
atafb.c
|
atafb: test virtual screen range before subtraction on unsigned
|
2008-07-24 10:47:37 -07:00 |
|
atafb.h
|
|
|
|
atafb_iplan2p2.c
|
|
|
|
atafb_iplan2p4.c
|
|
|
|
atafb_iplan2p8.c
|
|
|
|
atafb_mfb.c
|
|
|
|
atafb_utils.h
|
|
|
|
atmel_lcdfb.c
|
atmel_lcdfb: disallow setting larger resolution than the framebuffer memory can handle
|
2008-10-16 11:21:44 -07:00 |
|
au1100fb.c
|
|
|
|
au1100fb.h
|
|
|
|
au1200fb.c
|
|
|
|
au1200fb.h
|
|
|
|
bf54x-lq043fb.c
|
Blackfin arch: move include/asm-blackfin header files to arch/blackfin
|
2008-08-27 10:51:02 +08:00 |
|
bfin-t350mcqb-fb.c
|
lcd: add lcd_device to check_fb() entry in lcd_ops
|
2008-07-24 10:47:40 -07:00 |
|
bt431.h
|
|
|
|
bt455.h
|
|
|
|
bw2.c
|
sparc: Annotate of_device_id arrays with const or __initdata.
|
2008-08-31 01:23:17 -07:00 |
|
c2p.c
|
export c2p
|
2008-07-20 17:24:39 -07:00 |
|
c2p.h
|
|
|
|
carminefb.c
|
framebuffer: fix carminefb section mismatch
|
2008-10-16 11:21:45 -07:00 |
|
carminefb.h
|
fbdev: add the carmine FB driver
|
2008-07-24 10:47:34 -07:00 |
|
carminefb_regs.h
|
fbdev: add the carmine FB driver
|
2008-07-24 10:47:34 -07:00 |
|
cfbcopyarea.c
|
fb: add support for foreign endianness
|
2008-04-28 08:58:35 -07:00 |
|
cfbfillrect.c
|
fb: add support for foreign endianness
|
2008-04-28 08:58:35 -07:00 |
|
cfbimgblt.c
|
video: replace remaining __FUNCTION__ occurrences
|
2008-04-28 08:58:42 -07:00 |
|
cg3.c
|
sparc: Annotate of_device_id arrays with const or __initdata.
|
2008-08-31 01:23:17 -07:00 |
|
cg6.c
|
cg6: disable cursor when leaving graphics mode
|
2008-10-10 12:12:41 -07:00 |
|
cg14.c
|
sparc: Annotate of_device_id arrays with const or __initdata.
|
2008-08-31 01:23:17 -07:00 |
|
chipsfb.c
|
|
|
|
cirrusfb.c
|
cirrusfb: do not change MCLK for Alpine chips
|
2008-10-16 11:21:44 -07:00 |
|
clps711xfb.c
|
[ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach
|
2008-08-07 09:55:48 +01:00 |
|
cobalt_lcdfb.c
|
fbdev: add new Cobalt LCD framebuffer driver
|
2008-07-24 10:47:40 -07:00 |
|
controlfb.c
|
|
|
|
controlfb.h
|
|
|
|
cyber2000fb.c
|
[ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach
|
2008-08-07 09:55:48 +01:00 |
|
cyber2000fb.h
|
|
|
|
cyblafb.c
|
|
|
|
dnfb.c
|
m68k: dnfb doesnt check for Apollo
|
2008-05-18 13:28:49 -07:00 |
|
edid.h
|
|
|
|
efifb.c
|
efifb/imacfb consolidation + hardware support
|
2008-10-16 11:21:44 -07:00 |
|
epson1355fb.c
|
[ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach
|
2008-08-07 09:55:48 +01:00 |
|
fb_ddc.c
|
i2c: Let framebuffer drivers set their I2C bus class to DDC
|
2008-07-14 22:38:28 +02:00 |
|
fb_defio.c
|
fbdefio: add set_page_dirty handler to deferred IO FB
|
2008-08-20 15:40:32 -07:00 |
|
fb_draw.h
|
fb: add support for foreign endianness
|
2008-04-28 08:58:35 -07:00 |
|
fb_notify.c
|
|
|
|
fb_sys_fops.c
|
|
|
|
fbcmap.c
|
|
|
|
fbcvt.c
|
|
|
|
fbmem.c
|
lcd: allow lcd device to handle mode change events
|
2008-09-23 22:01:33 +01:00 |
|
fbmon.c
|
fbmon: fix EDID parser to detect interlace modes
|
2008-10-16 11:21:44 -07:00 |
|
fbsysfs.c
|
|
|
|
ffb.c
|
sparc: Annotate of_device_id arrays with const or __initdata.
|
2008-08-31 01:23:17 -07:00 |
|
fm2fb.c
|
|
|
|
fsl-diu-fb.c
|
freescale DIU: bug fix: add sanity check for AOI position
|
2008-08-15 08:35:43 -07:00 |
|
fsl-diu-fb.h
|
fbdev: powerpc: driver for Freescale 8610 and 5121 DIU
|
2008-04-28 08:58:40 -07:00 |
|
g364fb.c
|
|
|
|
gbefb.c
|
gbefb: cmap FIFO timeout
|
2008-07-30 09:41:47 -07:00 |
|
gxt4500.c
|
fbdev: use DIV_ROUND_UP or roundup
|
2008-04-28 08:58:35 -07:00 |
|
hecubafb.c
|
fbdev: platforming hecubafb and n411
|
2008-04-28 08:58:41 -07:00 |
|
hgafb.c
|
hgafb: convert to new platform driver API
|
2008-07-24 10:47:39 -07:00 |
|
hitfb.c
|
video: Fix up hp6xx driver build regressions.
|
2008-07-30 02:16:12 +09:00 |
|
hpfb.c
|
m68k: Return -ENODEV if no device is found
|
2008-05-18 13:28:50 -07:00 |
|
igafb.c
|
|
|
|
imacfb.c
|
efifb/imacfb consolidation + hardware support
|
2008-10-16 11:21:44 -07:00 |
|
imsttfb.c
|
video: replace remaining __FUNCTION__ occurrences
|
2008-04-28 08:58:42 -07:00 |
|
imxfb.c
|
[ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach
|
2008-08-07 09:55:48 +01:00 |
|
imxfb.h
|
|
|
|
Kconfig
|
fbdev: add new TMIO framebuffer driver
|
2008-10-16 11:21:45 -07:00 |
|
leo.c
|
leo: disable cursor when leaving graphics mode
|
2008-10-10 12:13:22 -07:00 |
|
macfb.c
|
make macfb_setup() static
|
2008-07-26 12:00:12 -07:00 |
|
macmodes.c
|
|
|
|
macmodes.h
|
|
|
|
Makefile
|
fbdev: add new TMIO framebuffer driver
|
2008-10-16 11:21:45 -07:00 |
|
maxinefb.c
|
|
|
|
metronomefb.c
|
metronomefb: Fix warning when building 64bit
|
2008-10-15 10:19:51 -07:00 |
|
modedb.c
|
fbdev: export symbol fb_mode_option
|
2008-06-06 11:29:12 -07:00 |
|
n411.c
|
fbdev: platforming hecubafb and n411
|
2008-04-28 08:58:41 -07:00 |
|
neofb.c
|
neofb: remove open_lock mutex
|
2008-10-16 11:21:42 -07:00 |
|
offb.c
|
fbdev: Teaches offb about palette on radeon r5xx/r6xx
|
2008-07-22 10:39:36 +10:00 |
|
output.c
|
|
|
|
p9100.c
|
sparc: Annotate of_device_id arrays with const or __initdata.
|
2008-08-31 01:23:17 -07:00 |
|
platinumfb.c
|
platinumfb: Use linux/of_{device,platform}.h instead of asm
|
2008-06-09 13:46:38 +10:00 |
|
platinumfb.h
|
|
|
|
pm2fb.c
|
pm2fb: free cmap memory on module remove
|
2008-08-20 15:40:31 -07:00 |
|
pm3fb.c
|
video: replace remaining __FUNCTION__ occurrences
|
2008-04-28 08:58:42 -07:00 |
|
pmag-aa-fb.c
|
|
|
|
pmag-ba-fb.c
|
|
|
|
pmagb-b-fb.c
|
|
|
|
ps3fb.c
|
powerpc/ps3: Add a sub-match id to ps3_system_bus
|
2008-07-22 10:39:33 +10:00 |
|
pvr2fb.c
|
sh: More header path fixups for mach dir refactoring.
|
2008-07-29 22:10:01 +09:00 |
|
pxafb.c
|
[ARM] pxafb: fix the warning of incorrect lccr when lcd_conn is specified
|
2008-08-16 16:39:16 +01:00 |
|
pxafb.h
|
pxafb: convert ctrlr_sem in a mutex
|
2008-07-24 10:47:37 -07:00 |
|
q40fb.c
|
|
|
|
s1d13xxxfb.c
|
fbdev: allow more chip revisions in Epson s1d13... video driver
|
2008-10-16 11:21:45 -07:00 |
|
s3c2410fb.c
|
[ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach
|
2008-08-07 09:55:48 +01:00 |
|
s3c2410fb.h
|
S3C2410: clean out changelog header and tidy
|
2008-05-24 09:56:13 -07:00 |
|
s3fb.c
|
removed unused #include <linux/version.h>'s
|
2008-08-23 12:14:12 -07:00 |
|
sa1100fb.c
|
[ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach
|
2008-08-07 09:55:48 +01:00 |
|
sa1100fb.h
|
sa1100fb: convert ctrlr_sem in a mutex
|
2008-07-24 10:47:37 -07:00 |
|
sbuslib.c
|
sparc video: remove open boot prom code
|
2008-05-08 21:37:30 -07:00 |
|
sbuslib.h
|
sparc video: remove open boot prom code
|
2008-05-08 21:37:30 -07:00 |
|
sgivwfb.c
|
x86, VisWS: turn into generic arch, move definitions
|
2008-07-10 18:55:40 +02:00 |
|
sh7760fb.c
|
sh7760fb: write colormap value to hardware
|
2008-07-28 16:30:21 -07:00 |
|
sh_mobile_lcdcfb.c
|
video: export sh_mobile_lcdc panel size
|
2008-08-11 20:17:55 +09:00 |
|
skeletonfb.c
|
skeletonfb: update to correct platform driver usage
|
2008-07-24 10:47:39 -07:00 |
|
sm501fb.c
|
sm501: fixup allocation code to be 64bit resource compliant
|
2008-07-24 10:47:40 -07:00 |
|
sstfb.c
|
video: replace remaining __FUNCTION__ occurrences
|
2008-04-28 08:58:42 -07:00 |
|
sticore.h
|
video/console/stico{n,re}.c: make code static
|
2008-07-26 12:00:12 -07:00 |
|
stifb.c
|
video/stifb.c: make 2 functions static
|
2008-07-26 12:00:12 -07:00 |
|
sunxvr500.c
|
sparc video: remove open boot prom code
|
2008-05-08 21:37:30 -07:00 |
|
sunxvr2500.c
|
sparc video: remove open boot prom code
|
2008-05-08 21:37:30 -07:00 |
|
svgalib.c
|
|
|
|
syscopyarea.c
|
fb: add support for foreign endianness
|
2008-04-28 08:58:35 -07:00 |
|
sysfillrect.c
|
fb: add support for foreign endianness
|
2008-04-28 08:58:35 -07:00 |
|
sysimgblt.c
|
video: replace remaining __FUNCTION__ occurrences
|
2008-04-28 08:58:42 -07:00 |
|
tcx.c
|
sparc: Annotate of_device_id arrays with const or __initdata.
|
2008-08-31 01:23:17 -07:00 |
|
tdfxfb.c
|
tdfxfb: do not make changes to default tdfx_fix
|
2008-10-16 11:21:42 -07:00 |
|
tgafb.c
|
|
|
|
tmiofb.c
|
fbdev: add new TMIO framebuffer driver
|
2008-10-16 11:21:45 -07:00 |
|
tridentfb.c
|
tridentfb: remove warning message that cyblafb driver should be used
|
2008-07-24 10:47:36 -07:00 |
|
uvesafb.c
|
uvesafb: don't treat mode info retrieval failures as errors
|
2008-10-16 11:21:44 -07:00 |
|
valkyriefb.c
|
|
|
|
valkyriefb.h
|
|
|
|
vesafb.c
|
|
|
|
vfb.c
|
vfb: only enable if explicitly requested when compiled in
|
2008-07-24 10:47:39 -07:00 |
|
vga16fb.c
|
vga16fb: remove open_lock mutex
|
2008-10-16 11:21:42 -07:00 |
|
vgastate.c
|
|
|
|
vt8623fb.c
|
removed unused #include <linux/version.h>'s
|
2008-08-23 12:14:12 -07:00 |
|
w100fb.c
|
w100fb: add 80 MHz modeline
|
2008-07-04 10:40:08 -07:00 |
|
w100fb.h
|
|
|
|
xen-fbfront.c
|
xen: clean up domain mode predicates
|
2008-08-20 12:40:07 +02:00 |
|
xilinxfb.c
|
removed unused #include <linux/version.h>'s
|
2008-08-23 12:14:12 -07:00 |