ACPI: video: Remove acpi_video_bus from list before tearing it down
authorHans de Goede <hdegoede@redhat.com>
Thu, 28 Apr 2022 15:53:51 +0000 (17:53 +0200)
committerHans de Goede <hdegoede@redhat.com>
Fri, 2 Sep 2022 07:57:14 +0000 (09:57 +0200)
Move the list_del removing an acpi_video_bus from video_bus_head
on teardown to before the teardown is done, to avoid code iterating
over the video_bus_head list seeing acpi_video_bus objects on there
which are (partly) torn down already.

Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
drivers/acpi/acpi_video.c

index 5cbe219..cde8ffa 100644 (file)
@@ -2111,14 +2111,14 @@ static int acpi_video_bus_remove(struct acpi_device *device)
 
        video = acpi_driver_data(device);
 
-       acpi_video_bus_remove_notify_handler(video);
-       acpi_video_bus_unregister_backlight(video);
-       acpi_video_bus_put_devices(video);
-
        mutex_lock(&video_list_lock);
        list_del(&video->entry);
        mutex_unlock(&video_list_lock);
 
+       acpi_video_bus_remove_notify_handler(video);
+       acpi_video_bus_unregister_backlight(video);
+       acpi_video_bus_put_devices(video);
+
        kfree(video->attached_array);
        kfree(video);