* [PATCH] ide: fix PCI refcounting
@ 2007-08-18 19:15 Sergei Shtylyov
2007-08-21 20:00 ` Bartlomiej Zolnierkiewicz
0 siblings, 1 reply; 2+ messages in thread
From: Sergei Shtylyov @ 2007-08-18 19:15 UTC (permalink / raw)
To: bzolnier; +Cc: linux-ide
The IDE core never marked the PCI IDE devices as being in use after succesfull
driver probe call (the devices were marked in use only while being probed), and
so was susceptible to issues caused by unsolicited PCI hotplug device removal.
So, add pci_dev_get() call to ide_scan_pcidev() and convert this function to
the kernel style, also dropping a bunch of useless curly braces from its caller,
ide_scan_pcibus() and somewhat beautifying printk() call there, while at it...
Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
---
Posting as promised (with a free bonus of 2 pdc202xx_new patches ;-).
This patch is also against the current Linus' tree.
drivers/ide/setup-pci.c | 41 ++++++++++++++++-------------------------
1 files changed, 16 insertions(+), 25 deletions(-)
Index: linux-2.6/drivers/ide/setup-pci.c
===================================================================
--- linux-2.6.orig/drivers/ide/setup-pci.c
+++ linux-2.6/drivers/ide/setup-pci.c
@@ -816,19 +816,15 @@ static int __init ide_scan_pcidev(struct
struct list_head *l;
struct pci_driver *d;
- list_for_each(l, &ide_pci_drivers)
- {
+ list_for_each(l, &ide_pci_drivers) {
d = list_entry(l, struct pci_driver, node);
- if(d->id_table)
- {
- const struct pci_device_id *id = pci_match_id(d->id_table, dev);
- if(id != NULL)
- {
- if(d->probe(dev, id) >= 0)
- {
- dev->driver = d;
- return 1;
- }
+ if (d->id_table) {
+ const struct pci_device_id *id = pci_match_id(d->id_table,
+ dev);
+ if (id != NULL && d->probe(dev, id) >= 0) {
+ dev->driver = d;
+ pci_dev_get(dev);
+ return 1;
}
}
}
@@ -851,15 +847,13 @@ void __init ide_scan_pcibus (int scan_di
struct list_head *l, *n;
pre_init = 0;
- if (!scan_direction) {
- while ((dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, dev)) != NULL) {
+ if (!scan_direction)
+ while ((dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, dev)) != NULL)
ide_scan_pcidev(dev);
- }
- } else {
- while ((dev = pci_get_device_reverse(PCI_ANY_ID, PCI_ANY_ID, dev)) != NULL) {
+ else
+ while ((dev = pci_get_device_reverse(PCI_ANY_ID, PCI_ANY_ID, dev))
+ != NULL)
ide_scan_pcidev(dev);
- }
- }
/*
* Hand the drivers over to the PCI layer now we
@@ -869,12 +863,9 @@ void __init ide_scan_pcibus (int scan_di
list_for_each_safe(l, n, &ide_pci_drivers) {
list_del(l);
d = list_entry(l, struct pci_driver, node);
- if (__pci_register_driver(d, d->driver.owner,
- d->driver.mod_name)) {
- printk(KERN_ERR "%s: failed to register driver "
- "for %s\n", __FUNCTION__,
- d->driver.mod_name);
- }
+ if (__pci_register_driver(d, d->driver.owner, d->driver.mod_name))
+ printk(KERN_ERR "%s: failed to register driver for %s\n",
+ __FUNCTION__, d->driver.mod_name);
}
}
#endif
^ permalink raw reply [flat|nested] 2+ messages in thread* Re: [PATCH] ide: fix PCI refcounting
2007-08-18 19:15 [PATCH] ide: fix PCI refcounting Sergei Shtylyov
@ 2007-08-21 20:00 ` Bartlomiej Zolnierkiewicz
0 siblings, 0 replies; 2+ messages in thread
From: Bartlomiej Zolnierkiewicz @ 2007-08-21 20:00 UTC (permalink / raw)
To: Sergei Shtylyov; +Cc: linux-ide
On Saturday 18 August 2007, Sergei Shtylyov wrote:
> The IDE core never marked the PCI IDE devices as being in use after succesfull
> driver probe call (the devices were marked in use only while being probed), and
> so was susceptible to issues caused by unsolicited PCI hotplug device removal.
> So, add pci_dev_get() call to ide_scan_pcidev() and convert this function to
> the kernel style, also dropping a bunch of useless curly braces from its caller,
> ide_scan_pcibus() and somewhat beautifying printk() call there, while at it...
>
> Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
applied
> ---
> Posting as promised (with a free bonus of 2 pdc202xx_new patches ;-).
Yay! Bonus patches! :)
> This patch is also against the current Linus' tree.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2007-08-21 20:40 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-08-18 19:15 [PATCH] ide: fix PCI refcounting Sergei Shtylyov
2007-08-21 20:00 ` Bartlomiej Zolnierkiewicz
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).