OSDN Git Service

PCI: Remove from bus_list and release resources in pci_release_dev()
authorYinghai Lu <yinghai@kernel.org>
Sat, 30 Nov 2013 22:40:29 +0000 (14:40 -0800)
committerBjorn Helgaas <bhelgaas@google.com>
Wed, 18 Dec 2013 20:53:40 +0000 (13:53 -0700)
commitef83b0781a73f9efcb1228256bfdfb97fc9533a8
tree01c8a9940789bfcef622006d9d8eb26fd4ab0ce6
parentef37702eb3cae2ec35d56ddd4f096cd47fec3f0d
PCI: Remove from bus_list and release resources in pci_release_dev()

Previously we removed the pci_dev from the bus_list and released its
resources in pci_destroy_dev().  But that's too early: it's possible to
call pci_destroy_dev() twice for the same device (e.g., via sysfs), and
that will cause an oops when we try to remove it from bus_list the second
time.

We should remove it from the bus_list only when the last reference to the
pci_dev has been released, i.e., in pci_release_dev().

[bhelgaas: changelog]
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
drivers/pci/probe.c
drivers/pci/remove.c