aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/video.c
diff options
context:
space:
mode:
authorKarol Kozimor <sziwan@hell.org.pl>2005-07-30 04:18:00 -0400
committerLen Brown <len.brown@intel.com>2005-08-04 22:32:51 -0400
commit031ec77bf67e4bda994ef8ceba267be3295ffdb7 (patch)
treeb2f8ec4abbc511568e1d147ebaa99967e180edfb /drivers/acpi/video.c
parente92310a930462c6e1611f35453f57357c42bde14 (diff)
[ACPI] acpi_remove_notify_handler() on video driver unload
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. Signed-off-by: Karol Kozimor <sziwan@hell.org.pl> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi/video.c')
-rw-r--r--drivers/acpi/video.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c
index 2cf264fd52e0..7b10a7b070c9 100644
--- a/drivers/acpi/video.c
+++ b/drivers/acpi/video.c
@@ -1665,6 +1665,7 @@ static int
1665acpi_video_bus_put_one_device( 1665acpi_video_bus_put_one_device(
1666 struct acpi_video_device *device) 1666 struct acpi_video_device *device)
1667{ 1667{
1668 acpi_status status;
1668 struct acpi_video_bus *video; 1669 struct acpi_video_bus *video;
1669 1670
1670 ACPI_FUNCTION_TRACE("acpi_video_bus_put_one_device"); 1671 ACPI_FUNCTION_TRACE("acpi_video_bus_put_one_device");
@@ -1679,6 +1680,12 @@ acpi_video_bus_put_one_device(
1679 up(&video->sem); 1680 up(&video->sem);
1680 acpi_video_device_remove_fs(device->dev); 1681 acpi_video_device_remove_fs(device->dev);
1681 1682
1683 status = acpi_remove_notify_handler(device->handle,
1684 ACPI_DEVICE_NOTIFY, acpi_video_device_notify);
1685 if (ACPI_FAILURE(status))
1686 ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
1687 "Error removing notify handler\n"));
1688
1682 return_VALUE(0); 1689 return_VALUE(0);
1683} 1690}
1684 1691