From: Akinobu Mita <[EMAIL PROTECTED]>
Fix single linked list manipulation for sub_driver. If the remving entry
is not on the head of the sub_driver list, it goes into infinate loop.
Though that infinite loop doesn't happen. Because the only user of
acpi_pci_register_dirver() is acpiphp.
Cc: Len Brown <[EMAIL PROTECTED]>
Signed-off-by: Akinobu Mita <[EMAIL PROTECTED]>
Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
---
drivers/acpi/pci_root.c | 9 +++++----
1 files changed, 5 insertions(+), 4 deletions(-)
diff -puN drivers/acpi/pci_root.c~acpi-fix-single-linked-list-manipulation
drivers/acpi/pci_root.c
--- a/drivers/acpi/pci_root.c~acpi-fix-single-linked-list-manipulation
+++ a/drivers/acpi/pci_root.c
@@ -98,11 +98,12 @@ void acpi_pci_unregister_driver(struct a
struct acpi_pci_driver **pptr = &sub_driver;
while (*pptr) {
- if (*pptr != driver)
- continue;
- *pptr = (*pptr)->next;
- break;
+ if (*pptr == driver)
+ break;
+ pptr = &(*pptr)->next;
}
+ BUG_ON(!*pptr);
+ *pptr = (*pptr)->next;
if (!driver->remove)
return;
_
-
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html