Sjur Brændeland
aded024a12
virtio_console: Don't access uninitialized data.
Don't access uninitialized work-queue when removing device.
The work queue is initialized only if the device multi-queue.
So don't call cancel_work unless this is a multi-queue device.
This fixes the following panic:
Kernel panic - not syncing: BUG!
Call Trace:
62031b28: [<6026085d>] panic+0x16b/0x2d3
62031b30: [<6004ef5e>] flush_work+0x0/0x1d7
62031b60: [<602606f2>] panic+0x0/0x2d3
62031b68: [<600333b0>] memcpy+0x0/0x140
62031b80: [<6002d58a>] unblock_signals+0x0/0x84
62031ba0: [<602609c5>] printk+0x0/0xa0
62031bd8: [<60264e51>] __mutex_unlock_slowpath+0x13d/0x148
62031c10: [<6004ef5e>] flush_work+0x0/0x1d7
62031c18: [<60050234>] try_to_grab_pending+0x0/0x17e
62031c38: [<6004e984>] get_work_gcwq+0x71/0x8f
62031c48: [<60050539>] __cancel_work_timer+0x5b/0x115
62031c78: [<628acc85>] unplug_port+0x0/0x191 [virtio_console]
62031c98: [<6005061c>] cancel_work_sync+0x12/0x14
62031ca8: [<628ace96>] virtcons_remove+0x80/0x15c [virtio_console]
62031ce8: [<628191de>] virtio_dev_remove+0x1e/0x7e [virtio]
62031d08: [<601cf242>] __device_release_driver+0x75/0xe4
62031d28: [<601cf2dd>] device_release_driver+0x2c/0x40
62031d48: [<601ce0dd>] driver_unbind+0x7d/0xc6
62031d88: [<601cd5d9>] drv_attr_store+0x27/0x29
62031d98: [<60115f61>] sysfs_write_file+0x100/0x14d
62031df8: [<600b737d>] vfs_write+0xcb/0x184
62031e08: [<600b58b8>] filp_close+0x88/0x94
62031e38: [<600b7686>] sys_write+0x59/0x88
62031e88: [<6001ced1>] handle_syscall+0x5d/0x80
62031ea8: [<60030a74>] userspace+0x405/0x531
62031f08: [<600d32cc>] sys_dup+0x0/0x5e
62031f28: [<601b11d6>] strcpy+0x0/0x18
62031f38: [<600be46c>] do_execve+0x10/0x12
62031f48: [<600184c7>] run_init_process+0x43/0x45
62031fd8: [<60019a91>] new_thread_handler+0xba/0xbc
Signed-off-by: Sjur Brændeland <sjur.brandeland@stericsson.com>
Cc: stable@kernel.org
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
|
2013-02-07 11:37:37 +10:30 |
| .. |
|
agp
|
Drivers: char: remove __dev* attributes.
|
2013-01-03 15:57:15 -08:00 |
|
hw_random
|
Drivers: char: remove __dev* attributes.
|
2013-01-03 15:57:15 -08:00 |
|
ipmi
|
Drivers: char: remove __dev* attributes.
|
2013-01-03 15:57:15 -08:00 |
|
mwave
|
8250: three way resolve of the 8250 diffs
|
2012-07-17 09:11:50 -07:00 |
|
pcmcia
|
TTY: call tty_port_destroy in the rest of drivers
|
2012-11-15 17:20:58 -08:00 |
|
tpm
|
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security
|
2012-12-16 15:40:50 -08:00 |
|
xilinx_hwicap
|
char: remove use of __devexit
|
2012-11-21 12:55:19 -08:00 |
|
apm-emulation.c
|
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/apm
|
2012-04-05 17:34:30 -07:00 |
|
applicom.c
|
|
|
|
applicom.h
|
|
|
|
bfin-otp.c
|
|
|
|
bsr.c
|
powerpc/BSR: cleanup the error path of bsr_init
|
2012-07-17 10:27:38 -07:00 |
|
ds1302.c
|
Remove all #inclusions of asm/system.h
|
2012-03-28 18:30:03 +01:00 |
|
ds1620.c
|
ARM: footbridge: nw_gpio_lock is raw_spin_lock
|
2012-10-07 10:33:12 +02:00 |
|
dsp56k.c
|
|
|
|
dtlk.c
|
|
|
|
efirtc.c
|
Remove all #inclusions of asm/system.h
|
2012-03-28 18:30:03 +01:00 |
|
generic_nvram.c
|
|
|
|
genrtc.c
|
Remove all #inclusions of asm/system.h
|
2012-03-28 18:30:03 +01:00 |
|
hangcheck-timer.c
|
|
|
|
hpet.c
|
drivers/char: for hpet, add count checking, and ~0UL instead of -1
|
2012-11-26 16:16:35 -08:00 |
|
i8k.c
|
module_param: make bool parameters really bool (drivers & misc)
|
2012-01-13 09:32:20 +10:30 |
|
Kconfig
|
char/misc: remove CONFIG_EXPERIMENTAL dependencies
|
2012-09-18 16:14:53 +01:00 |
|
lp.c
|
Merge branch 'x86-x32-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
|
2012-03-29 18:12:23 -07:00 |
|
Makefile
|
IPMI: Change link order
|
2012-10-16 18:07:12 -07:00 |
|
mbcs.c
|
char: remove use of __devinitconst
|
2012-11-21 12:55:19 -08:00 |
|
mbcs.h
|
|
|
|
mem.c
|
/dev/mem: use phys_addr_t for physical addresses
|
2012-10-24 15:32:50 -07:00 |
|
misc.c
|
switch device_get_devnode() and ->devnode() to umode_t *
|
2012-01-03 22:54:55 -05:00 |
|
mmtimer.c
|
drivers/char/mmtimer.c: Remove useless kfree
|
2012-09-26 13:20:40 -07:00 |
|
msm_smd_pkt.c
|
|
|
|
mspec.c
|
mm: kill vma flag VM_RESERVED and mm->reserved_vm counter
|
2012-10-09 16:22:19 +09:00 |
|
nsc_gpio.c
|
|
|
|
nvram.c
|
Remove all #inclusions of asm/system.h
|
2012-03-28 18:30:03 +01:00 |
|
nwbutton.c
|
drivers/char: removes unnecessary semicolon
|
2012-09-26 13:20:39 -07:00 |
|
nwbutton.h
|
|
|
|
nwflash.c
|
Merge branch 'late/fixes' into fixes
|
2012-10-07 07:22:32 -07:00 |
|
pc8736x_gpio.c
|
pc8736x_gpio: use platform_device_unregister in pc8736x_gpio_cleanup()
|
2012-10-24 15:52:29 -07:00 |
|
ppdev.c
|
Merge branch 'master' into for-next
|
2012-10-28 19:29:19 +01:00 |
|
ps3flash.c
|
char: remove use of __devinit
|
2012-11-21 12:55:19 -08:00 |
|
random.c
|
random: prime last_data value per fips requirements
|
2012-11-08 07:19:18 -05:00 |
|
raw.c
|
blockdev: remove bd_block_size_semaphore again
|
2012-11-29 10:52:19 -08:00 |
|
rtc.c
|
drivers/char: removes unnecessary semicolon
|
2012-09-26 13:20:39 -07:00 |
|
scx200_gpio.c
|
|
|
|
snsc.c
|
|
|
|
snsc.h
|
|
|
|
snsc_event.c
|
|
|
|
sonypi.c
|
char: remove use of __devexit
|
2012-11-21 12:55:19 -08:00 |
|
tb0219.c
|
char: remove use of __devexit
|
2012-11-21 12:55:19 -08:00 |
|
tile-srom.c
|
tile-srom.c driver: minor code cleanup
|
2012-04-02 12:14:10 -04:00 |
|
tlclk.c
|
drivers/char/tlclk.c: fix error return code
|
2012-08-16 10:09:15 -07:00 |
|
toshiba.c
|
|
|
|
ttyprintk.c
|
TTY: call tty_port_destroy in the rest of drivers
|
2012-11-15 17:20:58 -08:00 |
|
uv_mmtimer.c
|
|
|
|
virtio_console.c
|
virtio_console: Don't access uninitialized data.
|
2013-02-07 11:37:37 +10:30 |