Stefan Richter
855c603d61
firewire: fix crash in automatic module unloading
"modprobe firewire-ohci; sleep .1; modprobe -r firewire-ohci" used to
result in crashes like this:
BUG: unable to handle kernel paging request at ffffffff8807b455
IP: [<ffffffff8807b455>]
PGD 203067 PUD 207063 PMD 7c170067 PTE 0
Oops: 0010 [1] PREEMPT SMP
CPU 0
Modules linked in: i915 drm cpufreq_ondemand acpi_cpufreq freq_table applesmc input_polldev led_class coretemp hwmon eeprom snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss button thermal processor sg snd_hda_intel snd_pcm snd_timer snd snd_page_alloc sky2 i2c_i801 rtc [last unloaded: crc_itu_t]
Pid: 9, comm: events/0 Not tainted 2.6.25-rc2 #3
RIP: 0010:[<ffffffff8807b455>] [<ffffffff8807b455>]
RSP: 0018:ffff81007dcdde88 EFLAGS: 00010246
RAX: ffff81007dc95040 RBX: ffff81007dee5390 RCX: 0000000000005e13
RDX: 0000000000008c8b RSI: 0000000000000001 RDI: ffff81007dee5388
RBP: ffff81007dc5eb40 R08: 0000000000000002 R09: ffffffff8022d05c
R10: ffffffff8023b34c R11: ffffffff8041a353 R12: ffff81007dee5388
R13: ffffffff8807b455 R14: ffffffff80593bc0 R15: 0000000000000000
FS: 0000000000000000(0000) GS:ffffffff8055a000(0000) knlGS:0000000000000000
CS: 0010 DS: 0018 ES: 0018 CR0: 000000008005003b
CR2: ffffffff8807b455 CR3: 0000000000201000 CR4: 00000000000006e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Process events/0 (pid: 9, threadinfo ffff81007dcdc000, task ffff81007dc95040)
Stack: ffffffff8023b396 ffffffff88082524 0000000000000000 ffffffff8807d9ae
ffff81007dc5eb40 ffff81007dc9dce0 ffff81007dc5eb40 ffff81007dc5eb80
ffff81007dc9dce0 ffffffffffffffff ffffffff8023be87 0000000000000000
Call Trace:
[<ffffffff8023b396>] ? run_workqueue+0xdf/0x1df
[<ffffffff8023be87>] ? worker_thread+0xd8/0xe3
[<ffffffff8023e917>] ? autoremove_wake_function+0x0/0x2e
[<ffffffff8023bdaf>] ? worker_thread+0x0/0xe3
[<ffffffff8023e813>] ? kthread+0x47/0x74
[<ffffffff804198e0>] ? trace_hardirqs_on_thunk+0x35/0x3a
[<ffffffff8020c008>] ? child_rip+0xa/0x12
[<ffffffff8020b6e3>] ? restore_args+0x0/0x3d
[<ffffffff8023e68a>] ? kthreadd+0x14c/0x171
[<ffffffff8023e68a>] ? kthreadd+0x14c/0x171
[<ffffffff8023e7cc>] ? kthread+0x0/0x74
[<ffffffff8020bffe>] ? child_rip+0x0/0x12
Code: Bad RIP value.
RIP [<ffffffff8807b455>]
RSP <ffff81007dcdde88>
CR2: ffffffff8807b455
---[ end trace c7366c6657fe5bed ]---
Note that this crash happened _after_ firewire-core was unloaded. The
shared workqueue tried to run firewire-core's device initialization jobs
or similar jobs.
The fix makes sure that firewire-ohci and hence firewire-core is not
unloaded before all device shutdown jobs have been completed. This is
determined by the count of device initializations minus device releases.
Also skip useless retries in the node initialization job if the node is
to be shut down.
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Signed-off-by: Jarod Wilson <jwilson@redhat.com>
|
2008-03-02 12:35:46 +01:00 |
| .. |
|
acorn/char
|
|
|
|
acpi
|
Merge branches 'release', 'bugzilla-9916', 'bugzilla-9982', 'bugzilla-9989', 'misc', 'suspend', 'thermal', 'thinkpad' and 'tsc' into release
|
2008-02-21 02:41:58 -05:00 |
|
amba
|
|
|
|
ata
|
[libata] wrap kmap_atomic(KM_IRQ0) with local_irq_save/restore()
|
2008-02-29 19:10:51 -05:00 |
|
atm
|
|
|
|
auxdisplay
|
|
|
|
base
|
Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6
|
2008-02-21 16:33:19 -08:00 |
|
block
|
NBD: make nbd default to deadline I/O scheduler
|
2008-02-23 17:12:15 -08:00 |
|
bluetooth
|
hci_ldisc: fix null pointer deref
|
2008-02-12 17:54:16 -08:00 |
|
cdrom
|
Merge branch 'for-2.6.25' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc
|
2008-02-07 09:02:26 -08:00 |
|
char
|
Fix hpet_(un)register_irq_handler() for emulation
|
2008-02-29 08:06:37 -08:00 |
|
clocksource
|
|
|
|
connector
|
CONNECTOR: make cn_already_initialized static
|
2008-02-26 18:42:44 -08:00 |
|
cpufreq
|
cpufreq: fix kobject reference count handling
|
2008-02-21 15:27:06 -08:00 |
|
cpuidle
|
ACPI, cpuidle: Clarify C-state description in sysfs
|
2008-02-14 00:09:55 -05:00 |
|
crypto
|
[HIFN]: Fix invalid config ifdefs for RNG support
|
2008-02-15 19:15:05 +08:00 |
|
dca
|
DCA: convert struct class_device to struct device.
|
2008-02-08 15:33:33 -08:00 |
|
dio
|
dio: ARRAY_SIZE() cleanup
|
2008-02-05 09:44:23 -08:00 |
|
dma
|
async_tx: replace 'int_en' with operation preparation flags
|
2008-02-06 10:12:18 -07:00 |
|
edac
|
drivers/edac/i3000: document type promotion
|
2008-02-07 08:42:23 -08:00 |
|
eisa
|
|
|
|
firewire
|
firewire: fix crash in automatic module unloading
|
2008-03-02 12:35:46 +01:00 |
|
firmware
|
dmi: prevent linked list corruption
|
2008-02-23 17:12:15 -08:00 |
|
gpio
|
gpio: handle pca953{4,5,6,7,8} too
|
2008-02-06 10:41:15 -08:00 |
|
hid
|
HID: add USB IDs for MacBook 3rd generation
|
2008-02-13 17:08:04 +01:00 |
|
hwmon
|
hwmon: normal_i2c arrays should be const
|
2008-02-18 21:58:15 -05:00 |
|
i2c
|
i2c-i801: Add support for the ICH10
|
2008-02-24 20:03:42 +01:00 |
|
ide
|
ide: remove stale comments from ide-dma.c (take 2)
|
2008-02-26 21:50:36 +01:00 |
|
ieee1394
|
ieee1394: sbp2: fix rescan-scsi-bus
|
2008-02-19 19:57:24 +01:00 |
|
infiniband
|
RDMA/nes: Fix interrupt moderation low threshold
|
2008-02-26 16:24:29 -08:00 |
|
input
|
mn10300: add the MN10300/AM33 architecture to the kernel
|
2008-02-08 09:22:30 -08:00 |
|
isdn
|
isdn: fix section mismatch warning for ISACVer
|
2008-02-09 23:29:28 -08:00 |
|
leds
|
PWM LED driver
|
2008-02-08 09:22:38 -08:00 |
|
lguest
|
lguest: accept guest _PAGE_PWT page table entries
|
2008-02-09 23:24:09 +01:00 |
|
macintosh
|
PM: Introduce PM_EVENT_HIBERNATE callback state
|
2008-02-23 10:40:04 -08:00 |
|
mca
|
|
|
|
md
|
dm-raid1.c: fix NULL dereferences
|
2008-02-19 15:52:27 -08:00 |
|
media
|
V4L/DVB (7219): zoran: Fix namespace conflicts with Zoran 'GPIO_MAX' enum
|
2008-02-18 12:18:28 -03:00 |
|
memstick
|
drivers/memstick/host/tifm_ms.c breakage
|
2008-02-13 08:16:35 -08:00 |
|
message
|
[SCSI] mptbase: fix use-after-free's
|
2008-02-22 09:08:13 -06:00 |
|
mfd
|
ASIC3 driver
|
2008-02-07 08:42:23 -08:00 |
|
misc
|
Merge branches 'release', 'bugzilla-9916', 'bugzilla-9982', 'bugzilla-9989', 'misc', 'suspend', 'thermal', 'thinkpad' and 'tsc' into release
|
2008-02-21 02:41:58 -05:00 |
|
mmc
|
mmc: extend ricoh_mmc to support Ricoh RL5c476
|
2008-02-08 09:02:47 +01:00 |
|
mtd
|
Introduce path_put()
|
2008-02-14 21:13:33 -08:00 |
|
net
|
[BNX2X]: update version, remove CVS strings
|
2008-02-28 11:58:49 -08:00 |
|
nubus
|
nubus: kill drivers/nubus/nubus_syms.c
|
2008-02-05 09:44:23 -08:00 |
|
of
|
[POWERPC] Create and hook up of_platform_device_shutdown
|
2008-02-06 16:29:59 +11:00 |
|
oprofile
|
d_path: Make get_dcookie() use a struct path argument
|
2008-02-14 21:17:08 -08:00 |
|
parisc
|
iommu sg merging: parisc: make iommu respect the segment size limits
|
2008-02-05 09:44:10 -08:00 |
|
parport
|
parport: section fixup
|
2008-02-13 16:21:19 -08:00 |
|
pci
|
copyright owner and author clean up for intel iommu and related files
|
2008-02-23 17:12:14 -08:00 |
|
pcmcia
|
PCI: drivers/pcmcia/i82092.c: fix up after pci_bus_region changes
|
2008-02-21 15:34:35 -08:00 |
|
pnp
|
Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6
|
2008-02-14 21:29:46 -08:00 |
|
power
|
Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6
|
2008-02-07 09:45:58 -08:00 |
|
ps3
|
[POWERPC] PS3: Update sys-manager button events
|
2008-02-14 22:11:01 +11:00 |
|
rapidio
|
Merge branch 'linux-2.6'
|
2008-01-31 11:25:51 +11:00 |
|
rtc
|
rtc-cmos: display HPET emulation mode
|
2008-02-23 17:12:14 -08:00 |
|
s390
|
claw: make use of DIV_ROUND_UP
|
2008-02-23 23:57:45 -05:00 |
|
sbus
|
|
|
|
scsi
|
fix vmsas.c file permissions
|
2008-02-23 19:49:34 -08:00 |
|
serial
|
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/blackfin-2.6
|
2008-02-29 08:41:13 -08:00 |
|
sh
|
maple: fix device detection
|
2008-02-26 14:12:09 +09:00 |
|
sn
|
|
|
|
spi
|
spi: pxa2xx_spi clock polarity fix
|
2008-02-23 17:12:14 -08:00 |
|
ssb
|
SSB PCI core driver: use new SPROM data structure
|
2008-02-28 09:29:58 -05:00 |
|
tc
|
|
|
|
telephony
|
|
|
|
thermal
|
thermal: use ERR_PTR for returning error
|
2008-02-15 18:21:30 -05:00 |
|
uio
|
UIO: fix Greg's stupid changes
|
2008-02-21 15:27:07 -08:00 |
|
usb
|
Fix u132-hcd.c compile error
|
2008-02-23 20:29:09 -08:00 |
|
video
|
drivers/video/uvesafb.c: fix section mismatch warning in param_set_scroll()
|
2008-02-23 17:12:15 -08:00 |
|
virtio
|
virtio: add missing #include <linux/delay.h>
|
2008-02-06 10:41:21 -08:00 |
|
w1
|
DS1WM: decouple host IRQ and INTR active state settings
|
2008-02-07 08:42:06 -08:00 |
|
watchdog
|
[WATCHDOG] HP ProLiant WatchDog driver
|
2008-02-18 17:06:21 +00:00 |
|
xen
|
|
|
|
zorro
|
|
|
|
Kconfig
|
memstick: initial commit for Sony MemoryStick support
|
2008-02-09 11:08:34 -08:00 |
|
Makefile
|
memstick: initial commit for Sony MemoryStick support
|
2008-02-09 11:08:34 -08:00 |