Re: [PATCH -v1] acpi: Fix possible recursive locking in hwregs.c

From: Rakib Mullick
Date: Fri Nov 04 2011 - 01:53:59 EST


On Thu, Nov 3, 2011 at 11:40 PM, Srivatsa S. Bhat
<srivatsa.bhat@xxxxxxxxxxxxxxxxxx> wrote:
> Hi,
>
> On 11/03/2011 05:32 PM, Lin Ming wrote:
>> On Thu, 2011-11-03 at 18:48 +0800, Rakib Mullick wrote:
>>> Calling pm-suspend might trigger a recursive lock in it's code path. In function acpi_hw_clear_acpi_status,
>>
>> As I replied at https://lkml.org/lkml/2011/9/22/6, I still don't think
>> there is a recursive lock.
>>
>
> At first look, it definitely doesn't look like a recursive lock, as Lin said.
> But, quoting Documentation/lockdep-design.txt:
>
> "Multi-lock dependency rules:
> ----------------------------
>
> The same lock-class must not be acquired twice, because this could lead
> to lock recursion deadlocks."
>
> So, Rakib, do the 2 locks belong to the same lock-class? If yes, then I think
> that is the reason for the lockdep splat. Could you show the lockdep warning?
>
Yes, same lock-class. And as per "Multi-lock dependency rules:", it
leads to lock recursion deadlocks.
Lockdep warning attached.

> By the way, another way to look at this patch is as an optimization..
> i.e., if acpi_gbl_hardware_lock doesn't need to be held to call
> acpi_ev_walk_gpe_list(), then we can move from the coarse-grained locking
> to finer-grained locking by releasing it earlier, as you did in your patch.
> [Note that you will have to update the goto label also, i.e., rename it as
> 'exit' or something like that]
>
I can do it, thanks for suggestions. But, what does Lin thinks? Lin
are you okay?

Thanks,
Rakib

Attachment: lockdepwarning
Description: Binary data