Messages in this thread |  | | Subject | Re: [PATCH] acpi: Fix possible recursive locking in hwregs.c | From | Lin Ming <> | Date | Thu, 22 Sep 2011 12:28:07 +0800 |
| |
On Thu, 2011-09-22 at 11:35 +0800, Rakib Mullick wrote: > On Thu, Sep 22, 2011 at 6:59 AM, Lin Ming <ming.m.lin@intel.com> wrote: > > On Thu, Sep 22, 2011 at 2:09 AM, Rakib Mullick <rakib.mullick@gmail.com> wrote: > >> Calling pm-suspend might trigger a recursive lock in it's code path. In function acpi_hw_clear_acpi_status, > >> acpi_os_release_lock holds the lock acpi_gbl_hardware_lock before calling acpi_hw_register_write(), then > >> without releasing acpi_gbl_hardware_lock, this function calls acpi_ev_walk_gpe_list, which also tries to > >> hold acpi_gbl_hardware_lock and thus causes possible recursive lock. > > > > No, acpi_ev_walk_gpe_list holds acpi_gbl_gpe_lock. > > > Yes, right. Actually, acpi_os_release_lock() tries to hold > acpi_gbl_gpe_lock without releasing acpi_gbl_hardware_lock. Right?
Do you mean "acpi_ev_walk_gpe_list() tries to hold acpi_gbl_gpe_lock..."?
We have below locks sequence. I don't see the problem.
acpi_hw_clear_acpi_status:
<acquire acpi_gbl_hardware_lock>
acpi_ev_walk_gpe_list: <acquire acpi_gbl_gpe_lock> ... <release acpi_gbl_gpe_lock> ... <release acpi_gbl_hardware_lock>
> > Thanks, > Rakib
|  |