Subject: [patch 09/12] acpi: video.c: properly remove notify handlers
From: [email-masked]
To: Brown, Len
Cc: [email-masked]; [email-masked]

From: Karol Kozimor <[email-masked]>

The video driver doesn't properly remove all the notify handlers on module
unload.  This has a side effect of subdevices failing to register on module
reload, but sudden death looms if the handlers trigger after the module is
unloaded (not that I've seen such a machine, but still).

Signed-off-by: Karol Kozimor <[email-masked]>
Signed-off-by: Andrew Morton <[email-masked]>
---

 drivers/acpi/video.c |    7 +++++++
 1 files changed, 7 insertions(+)

diff -puN drivers/acpi/video.c~acpi-videoc-properly-remove-notify-handlers drivers/acpi/video.c
--- devel/drivers/acpi/video.c~acpi-videoc-properly-remove-notify-handlers	2005-07-14 15:53:43.000000000 -0700
+++ devel-akpm/drivers/acpi/video.c	2005-07-14 15:53:43.000000000 -0700
@@ -1665,6 +1665,7 @@ static int
 acpi_video_bus_put_one_device(
 	struct acpi_video_device	*device)
 {
+	acpi_status status;
 	struct acpi_video_bus *video;
 
 	ACPI_FUNCTION_TRACE("acpi_video_bus_put_one_device");
@@ -1679,6 +1680,12 @@ acpi_video_bus_put_one_device(
 	up(&video->sem);
 	acpi_video_device_remove_fs(device->dev);
 
+	status = acpi_remove_notify_handler(device->handle,
+		ACPI_DEVICE_NOTIFY, acpi_video_device_notify);
+	if (ACPI_FAILURE(status))
+		ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
+			"Error removing notify handler\n"));
+
 	return_VALUE(0);
 }
 
_