From: Chuck Ebbert Date: Wed, 16 Apr 2008 02:45:05 +0000 (+0000) Subject: acpi: bus: check once more for an empty list after locking it X-Git-Tag: v2.6.24.5~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bcf7b3914e9cd04e09685a1460da8b90e46a8001;p=thirdparty%2Fkernel%2Fstable.git acpi: bus: check once more for an empty list after locking it upstream commit: f0a37e008750ead1751b7d5e89d220a260a46147 List could have become empty after the unlocked check that was made earlier, so check again inside the lock. Should fix https://bugzilla.redhat.com/show_bug.cgi?id=427765 Signed-off-by: Chuck Ebbert Cc: Cc: Len Brown Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds Signed-off-by: Chris Wright --- diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c index f4487c38d9f29..3401e2cfd3ab0 100644 --- a/drivers/acpi/bus.c +++ b/drivers/acpi/bus.c @@ -350,10 +350,11 @@ int acpi_bus_receive_event(struct acpi_bus_event *event) } spin_lock_irqsave(&acpi_bus_event_lock, flags); - entry = - list_entry(acpi_bus_event_list.next, struct acpi_bus_event, node); - if (entry) + if (!list_empty(&acpi_bus_event_list)) { + entry = list_entry(acpi_bus_event_list.next, + struct acpi_bus_event, node); list_del(&entry->node); + } spin_unlock_irqrestore(&acpi_bus_event_lock, flags); if (!entry)