aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2005-06-17 12:25:25 -0700
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-06-17 12:34:20 -0700
commit794f5bfa77955c4455f6d72d8b0e2bee25f1ff0c (patch)
tree7a9ea02e064ed7089e3a8666161aca060359c971
parentcaf2857ac6e0ba2651e722f05d5f7d3ec8ef2615 (diff)
downloadkernel_samsung_smdk4412-794f5bfa77955c4455f6d72d8b0e2bee25f1ff0c.tar.gz
kernel_samsung_smdk4412-794f5bfa77955c4455f6d72d8b0e2bee25f1ff0c.tar.bz2
kernel_samsung_smdk4412-794f5bfa77955c4455f6d72d8b0e2bee25f1ff0c.zip
[PATCH] PCI: don't override drv->shutdown unconditionally
There are many drivers that have been setting the generic driver model level shutdown callback, and pci thus must not override it. Without this patch we can have really bad data loss on various raid controllers. Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--drivers/pci/pci-driver.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c
index fe98553c978..f315df2005b 100644
--- a/drivers/pci/pci-driver.c
+++ b/drivers/pci/pci-driver.c
@@ -393,7 +393,10 @@ int pci_register_driver(struct pci_driver *drv)
drv->driver.bus = &pci_bus_type;
drv->driver.probe = pci_device_probe;
drv->driver.remove = pci_device_remove;
- drv->driver.shutdown = pci_device_shutdown,
+ /* FIXME, once all of the existing PCI drivers have been fixed to set
+ * the pci shutdown function, this test can go away. */
+ if (!drv->driver.shutdown)
+ drv->driver.shutdown = pci_device_shutdown,
drv->driver.owner = drv->owner;
drv->driver.kobj.ktype = &pci_driver_kobj_type;
pci_init_dynids(&drv->dynids);