[Intel-gfx] [PATCH] ACPI / video: Fix circular lock dependency issue in the video-detect code

Sedat Dilek sedat.dilek at gmail.com
Fri Aug 14 02:36:41 PDT 2015


On Fri, Aug 14, 2015 at 11:39 AM, Rafael J. Wysocki <rjw at rjwysocki.net> wrote:
> On Thursday, August 13, 2015 10:39:08 PM Sedat Dilek wrote:
>>
>> --f46d04447e7fc2306e051d3753a5
>> Content-Type: text/plain; charset=UTF-8
>>
>> On Thu, Aug 13, 2015 at 6:53 PM, Hans de Goede <hdegoede at redhat.com> wrote:
>> > Before this commit, the following would happen:
>> >
>> > a) acpi_video_get_backlight_type() gets called
>> > b) acpi_video_get_backlight_type() calls acpi_video_init_backlight_type()
>> > c) acpi_video_init_backlight_type() locks its function static init_mutex
>> > d) acpi_video_init_backlight_type() calls backlight_register_notifier()
>> > e) backlight_register_notifier() takes its notifier-chain lock
>> >
>> > And when the backlight notifier chain gets called we've:
>> >
>> > 1) blocking_notifier_call_chain() gets called
>> > 2) blocking_notifier_call_chain() takes the notifier-chain lock
>> > 3) blocking_notifier_call_chain() calls acpi_video_backlight_notify()
>> > 4) acpi_video_backlight_notify() calls acpi_video_get_backlight_type()
>> > 5) acpi_video_get_backlight_type() calls acpi_video_init_backlight_type()
>> > 6) acpi_video_init_backlight_type() locks its function static init_mutex
>> >
>> > So in the first call sequence we have:
>> >
>> > a) init_mutex gets locked
>> > b) notifier-chain gets locked
>> >
>> > and in the second call sequence we have:
>> >
>> > 1) notifier-chain gets locked
>> > 2) init_mutex gets locked
>> >
>> > And we've a circular locking dependency. This specific locking dependency
>> > is fixable without using the big hammer otherwise known as a workqueue,
>> > but further analysis shows a similar problem with the backlight notifier
>> > chain lock vs register_count_mutex from drivers/acpi/acpi_video.c,
>> > and fixing that becomes problematic.
>> >
>> > So this commit simply fixes this with the big hammer, performance
>> > wise this is a non issue as we expect the work to get scheduled
>> > exactly zero or one times during normal system use.
>> >
>>
>> This patch on top of Linux v4.2-rc6 fixes the issue for me.
>>
>> Feel free to add my...
>>
>>    Reported-by: Sedat Dilek <sedat.dilek at gmail.com>
>>    Tested-by: Sedat Dilek <sedat.dilek at gmail.com>
>
> Applied, thanks!
>

Thanks for carrying this one.
Isn't this a for-4.2/acpi-video-fixes?
Why did you apply this in your linux-next Git branch?

- sed@ -

[1] http://git.kernel.org/cgit/linux/kernel/git/rafael/linux-pm.git/commit/?h=linux-next&id=7231ed1a813e0a9d249bbbe58e66ca058aee83e1

> Rafael
>


More information about the Intel-gfx mailing list