• Aaron Lu's avatar
    ACPI: video: correct acpi_video_bus_add error processing · 91e13aa3
    Aaron Lu authored
    acpi_video_bus_get_devices() may fail due to some video output device
    doesn't have the _ADR method, and in this case, the error processing
    is to simply free the video structure in acpi_video_bus_add(), while
    leaving those already registered video output devices in the wild,
    which means for some video output device, we have already registered
    a backlight interface and installed a notification handler for it.
    So it can happen when user is using this system, on hotkey pressing,
    the notification handler will send a keycode through a non-existing
    input device, causing kernel freeze.
    
    To solve this problem, free all those already registered video output
    devices once something goes wrong in acpi_video_bus_get_devices(), so
    that no wild backlight interfaces and notification handlers exist.
    
    References: https://bugzilla.kernel.org/show_bug.cgi?id=51731
    Reported-and-tested-by: <i-tek@web.de>
    Signed-off-by: default avatarAaron Lu <aaron.lu@intel.com>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    91e13aa3
video.c 48.4 KB