aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/acpica/evgpeutil.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/acpi/acpica/evgpeutil.c')
-rw-r--r--drivers/acpi/acpica/evgpeutil.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/drivers/acpi/acpica/evgpeutil.c b/drivers/acpi/acpica/evgpeutil.c
index 3c43796b8361..cb50dd91bc18 100644
--- a/drivers/acpi/acpica/evgpeutil.c
+++ b/drivers/acpi/acpica/evgpeutil.c
@@ -54,7 +54,7 @@ ACPI_MODULE_NAME("evgpeutil")
54 * FUNCTION: acpi_ev_walk_gpe_list 54 * FUNCTION: acpi_ev_walk_gpe_list
55 * 55 *
56 * PARAMETERS: gpe_walk_callback - Routine called for each GPE block 56 * PARAMETERS: gpe_walk_callback - Routine called for each GPE block
57 * Context - Value passed to callback 57 * context - Value passed to callback
58 * 58 *
59 * RETURN: Status 59 * RETURN: Status
60 * 60 *
@@ -347,6 +347,8 @@ acpi_ev_delete_gpe_handlers(struct acpi_gpe_xrupt_info *gpe_xrupt_info,
347 void *context) 347 void *context)
348{ 348{
349 struct acpi_gpe_event_info *gpe_event_info; 349 struct acpi_gpe_event_info *gpe_event_info;
350 struct acpi_gpe_notify_info *notify;
351 struct acpi_gpe_notify_info *next;
350 u32 i; 352 u32 i;
351 u32 j; 353 u32 j;
352 354
@@ -365,10 +367,28 @@ acpi_ev_delete_gpe_handlers(struct acpi_gpe_xrupt_info *gpe_xrupt_info,
365 367
366 if ((gpe_event_info->flags & ACPI_GPE_DISPATCH_MASK) == 368 if ((gpe_event_info->flags & ACPI_GPE_DISPATCH_MASK) ==
367 ACPI_GPE_DISPATCH_HANDLER) { 369 ACPI_GPE_DISPATCH_HANDLER) {
370
371 /* Delete an installed handler block */
372
368 ACPI_FREE(gpe_event_info->dispatch.handler); 373 ACPI_FREE(gpe_event_info->dispatch.handler);
369 gpe_event_info->dispatch.handler = NULL; 374 gpe_event_info->dispatch.handler = NULL;
370 gpe_event_info->flags &= 375 gpe_event_info->flags &=
371 ~ACPI_GPE_DISPATCH_MASK; 376 ~ACPI_GPE_DISPATCH_MASK;
377 } else if ((gpe_event_info->
378 flags & ACPI_GPE_DISPATCH_MASK) ==
379 ACPI_GPE_DISPATCH_NOTIFY) {
380
381 /* Delete the implicit notification device list */
382
383 notify = gpe_event_info->dispatch.notify_list;
384 while (notify) {
385 next = notify->next;
386 ACPI_FREE(notify);
387 notify = next;
388 }
389 gpe_event_info->dispatch.notify_list = NULL;
390 gpe_event_info->flags &=
391 ~ACPI_GPE_DISPATCH_MASK;
372 } 392 }
373 } 393 }
374 } 394 }