]> git.baikalelectronics.ru Git - kernel.git/commit
ACPICA: Namespace: Fix deadlock triggered by MLC support in dynamic table loading
authorLv Zheng <lv.zheng@intel.com>
Tue, 21 Jun 2016 04:34:15 +0000 (12:34 +0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 21 Jun 2016 23:07:35 +0000 (01:07 +0200)
commitfbe40da71e23a015d7d1a081d141fbd73b1f783e
tree5ce8811934caf7d10eed25f693f9ada91d97096b
parent22b694f8935d34fb74fd2130d77affc4d2605b76
ACPICA: Namespace: Fix deadlock triggered by MLC support in dynamic table loading

The new module-level code (MLC) approach invokes MLC on the per-table
basis, but the dynamic loading support of this is incorrect because
of the lock order:

 acpi_ns_evaluate
   acpi_ex_enter_intperter
     acpi_ns_load_table (triggered by Load opcode)
       acpi_ns_exec_module_code_list
         acpi_ex_enter_intperter

The regression is introduced by the following commit:

  Commit: c372bd02306096b8e78a1abdc7360b49ef906cf7
  ACPICA Commit: 071eff738c59eda1792ac24b3b688b61691d7e7c
  Subject: ACPICA: Add per-table execution of module-level code

This patch fixes this regression by unlocking the interpreter lock
before invoking MLC.  However, the unlocking is done to the
acpi_ns_load_table(), in which the interpreter lock should be locked
by acpi_ns_parse_table() but it wasn't.

Fixes: c372bd023060 (ACPICA: Add per-table execution of module-level code)
Reported-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Tested-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Cc: 4.5+ <stable@vger.kernel.org> # 4.5+
[ rjw : Subject ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/acpica/exconfig.c
drivers/acpi/acpica/nsparse.c