summaryrefslogtreecommitdiffstats
path: root/drivers/acpi/events
diff options
context:
space:
mode:
authorBob Moore <robert.moore@intel.com>2007-04-03 20:00:29 -0400
committerLen Brown <len.brown@intel.com>2007-07-03 01:56:30 -0400
commite0b91050f208ab370fac9269f8e42bc746889422 (patch)
treeebbffb91c0cb32b04a474dc2fcb23db0637d7b0b /drivers/acpi/events
parenta0a3f6c69b45dcafefdce5dbac2221c02aaae871 (diff)
downloadlinux-e0b91050f208ab370fac9269f8e42bc746889422.tar.gz
linux-e0b91050f208ab370fac9269f8e42bc746889422.tar.bz2
linux-e0b91050f208ab370fac9269f8e42bc746889422.zip
ACPICA: Fixed possible corruption of global GPE list
Fixed a problem in acpi_ev_delete_gpe_xrupt where the global interrupt list could be corrupted if the interrupt being removed was at the head of the list. Reported by Linn Crosetto. Signed-off-by: Bob Moore <robert.moore@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi/events')
-rw-r--r--drivers/acpi/events/evgpeblk.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/acpi/events/evgpeblk.c b/drivers/acpi/events/evgpeblk.c
index 902c287b3a4f..361ebe6c4a6f 100644
--- a/drivers/acpi/events/evgpeblk.c
+++ b/drivers/acpi/events/evgpeblk.c
@@ -586,6 +586,10 @@ acpi_ev_delete_gpe_xrupt(struct acpi_gpe_xrupt_info *gpe_xrupt)
flags = acpi_os_acquire_lock(acpi_gbl_gpe_lock);
if (gpe_xrupt->previous) {
gpe_xrupt->previous->next = gpe_xrupt->next;
+ } else {
+ /* No previous, update list head */
+
+ acpi_gbl_gpe_xrupt_list_head = gpe_xrupt->next;
}
if (gpe_xrupt->next) {