Files
linux/drivers
Alex Chiang a13307cef8 PCI: acpiphp: cleanup notify handler on all root bridges
During the development of the physical PCI slot patch series, Gary Hade
kept on reporting strange oopses due to interactions between pci_slot
and acpiphp.

	http://lkml.org/lkml/2007/11/28/319

find_root_bridges() unconditionally installs
handle_hotplug_event_bridge() as an ACPI_SYSTEM_NOTIFY handler for all
root bridges.

However, during module cleanup, remove_bridge() will only remove the
notify handler iff the root bridge had a hot-pluggable slot directly
underneath. That is:

	root bridge -> hotplug slot

But, if the topology looks like either of the following:

	root bridge -> non-hotplug slot
	root bridge -> p2p bridge -> hotplug slot

Then we currently do not remove the notify handler from that root
bridge.

This can cause a kernel oops if we modprobe acpiphp later and it gets
loaded somewhere else in memory. If the root bridge then receives a
hotplug event, it will then attempt to call a stale, non-existent notify
handler and we blow up.

Much thanks goes to Gary Hade for his persistent debugging efforts.

Signed-off-by: Alex Chiang <achiang@hp.com>
Signed-off-by: Gary Hade <garyhade@us.ibm.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
2008-07-02 11:27:30 -07:00
..
2008-06-11 16:50:40 -07:00
2008-06-12 18:05:40 -07:00
2008-06-19 00:12:35 +02:00
2008-05-24 09:56:11 -07:00
2008-05-20 16:44:43 +02:00
2008-06-19 06:50:32 -04:00
2008-06-20 20:53:35 +02:00
2008-06-19 00:12:36 +02:00
2008-05-20 13:31:55 -07:00
2008-05-21 16:56:00 -07:00
2008-06-20 21:58:02 -07:00
2008-06-12 18:05:42 -07:00
2008-06-15 11:12:20 -05:00
2008-05-20 13:31:55 -07:00