8250 PCI Serial driver not always disabling PCI device
PATCH 1/1 8250 PCI Serial driver not always disabling PCI device
Hi,
I found that pciserial_remove_one() only disables the device if it finds private data. This looks suspicious to me. Patch attached.
Eike
--- linux-2.6.13-rc3/drivers/serial/8250_pci.c 2005-07-13 06:46:46.000000000
+0200
+++ linux-2.6.13-rc3-eike/drivers/serial/8250_pci.c 2005-07-20
09:16:28.000000000 +0200
@@ -1778,10 +1778,10 @@ static void __devexit pciserial_remove_o
if (quirk->exit)
quirk->exit(dev);
- pci_disable_device(dev);
-
kfree(priv);
}
+
+ pci_disable_device(dev);
}
static int pciserial_suspend_one(struct pci_dev *dev, pm_message_t state)
Quoted 2 lines · Rolf Eike Beer
I found that
pciserial_remove_one()only disables the device if it finds private data. This looks suspicious to me. Patch attached.
Makes no difference. If we don't have the private data set, then we have errored out during the initialisation, and we disabled the device on the way out. Moreover, the exit function won't even be called.
So we actually have the guarantee that there will always be private data here.
Signature · 3 lines
Russell King Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/ maintainer of: 2.6 Serial core
Am Mittwoch, 20. Juli 2005 10:03 schrieb Russell King:
Quoted 11 lines · Rolf Eike Beer
Quoted 2 lines
I found that
pciserial_remove_one()only disables the device if it finds private data. This looks suspicious to me. Patch attached.Makes no difference. If we don't have the private data set, then we have errored out during the initialisation, and we disabled the device on the way out. Moreover, the exit function won't even be called.
So we actually have the guarantee that there will always be private data here.
In this case we should just kill the test if the private data is present. If something is seriously wrong this will oops and not hide the bug. This is done in other places the same way.
Eike