Messages in this thread Patch in this message | | | Date | Wed, 16 Apr 2008 18:02:24 -0700 | From | Chris Wright <> | Subject | acpi: bus: check once more for an empty list after locking it |
| |
-stable review patch. If anyone has any objections, please let us know. ---------------------
From: Chuck Ebbert <cebbert@redhat.com>
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 <cebbert@redhat.com> Cc: <stable@kernel.org> Cc: Len Brown <lenb@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Chris Wright <chrisw@sous-sol.org> --- drivers/acpi/bus.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
--- a/drivers/acpi/bus.c +++ b/drivers/acpi/bus.c @@ -350,10 +350,11 @@ int acpi_bus_receive_event(struct acpi_b } 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) --
| |