Takashi Iwai 552b5d
From faae443738c6f0dac9b0d3d11d108f6911a989a9 Mon Sep 17 00:00:00 2001
Takashi Iwai 552b5d
From: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
Takashi Iwai 552b5d
Date: Fri, 14 Apr 2023 16:00:48 +0200
Takashi Iwai 552b5d
Subject: [PATCH] ACPI: bus: Ensure that notify handlers are not running after removal
Takashi Iwai 552b5d
Git-commit: faae443738c6f0dac9b0d3d11d108f6911a989a9
Takashi Iwai 552b5d
Patch-mainline: v6.4-rc1
Takashi Iwai 552b5d
References: git-fixes
Takashi Iwai 552b5d
Takashi Iwai 552b5d
Currently, acpi_device_remove_notify_handler() may return while the
Takashi Iwai 552b5d
notify handler being removed is still running which may allow the
Takashi Iwai 552b5d
module holding that handler to be torn down prematurely.
Takashi Iwai 552b5d
Takashi Iwai 552b5d
Address this issue by making acpi_device_remove_notify_handler() wait
Takashi Iwai 552b5d
for the handling of all the ACPI events in progress to complete before
Takashi Iwai 552b5d
returning.
Takashi Iwai 552b5d
Takashi Iwai 552b5d
Fixes: 5894b0c46e49 ("ACPI / scan: Move bus operations and notification routines to bus.c")
Takashi Iwai 552b5d
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Takashi Iwai 552b5d
Acked-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai 552b5d
Takashi Iwai 552b5d
---
Takashi Iwai 552b5d
 drivers/acpi/bus.c |    1 +
Takashi Iwai 552b5d
 1 file changed, 1 insertion(+)
Takashi Iwai 552b5d
Takashi Iwai 552b5d
--- a/drivers/acpi/bus.c
Takashi Iwai 552b5d
+++ b/drivers/acpi/bus.c
Takashi Iwai 552b5d
@@ -572,6 +572,7 @@ static void acpi_device_remove_notify_ha
Takashi Iwai 552b5d
 	else
Takashi Iwai 552b5d
 		acpi_remove_notify_handler(device->handle, ACPI_DEVICE_NOTIFY,
Takashi Iwai 552b5d
 					   acpi_notify_device);
Takashi Iwai 552b5d
+	acpi_os_wait_events_complete();
Takashi Iwai 552b5d
 }
Takashi Iwai 552b5d
 
Takashi Iwai 552b5d
 /* Handle events targeting \_SB device (at present only graceful shutdown) */