lkml.org 
[lkml]   [2020]   [Nov]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.9 208/391] ACPI: debug: dont allow debugging when ACPI is disabled
    Date
    From: Jamie Iles <jamie@nuviainc.com>

    commit 0fada277147ffc6d694aa32162f51198d4f10d94 upstream.

    If ACPI is disabled then loading the acpi_dbg module will result in the
    following splat when lock debugging is enabled.

    DEBUG_LOCKS_WARN_ON(lock->magic != lock)
    WARNING: CPU: 0 PID: 1 at kernel/locking/mutex.c:938 __mutex_lock+0xa10/0x1290
    Kernel panic - not syncing: panic_on_warn set ...
    CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.9.0-rc8+ #103
    Hardware name: linux,dummy-virt (DT)
    Call trace:
    dump_backtrace+0x0/0x4d8
    show_stack+0x34/0x48
    dump_stack+0x174/0x1f8
    panic+0x360/0x7a0
    __warn+0x244/0x2ec
    report_bug+0x240/0x398
    bug_handler+0x50/0xc0
    call_break_hook+0x160/0x1d8
    brk_handler+0x30/0xc0
    do_debug_exception+0x184/0x340
    el1_dbg+0x48/0xb0
    el1_sync_handler+0x170/0x1c8
    el1_sync+0x80/0x100
    __mutex_lock+0xa10/0x1290
    mutex_lock_nested+0x6c/0xc0
    acpi_register_debugger+0x40/0x88
    acpi_aml_init+0xc4/0x114
    do_one_initcall+0x24c/0xb10
    kernel_init_freeable+0x690/0x728
    kernel_init+0x20/0x1e8
    ret_from_fork+0x10/0x18

    This is because acpi_debugger.lock has not been initialized as
    acpi_debugger_init() is not called when ACPI is disabled. Fail module
    loading to avoid this and any subsequent problems that might arise by
    trying to debug AML when ACPI is disabled.

    Fixes: 8cfb0cdf07e2 ("ACPI / debugger: Add IO interface to access debugger functionalities")
    Reviewed-by: Hanjun Guo <guohanjun@huawei.com>
    Signed-off-by: Jamie Iles <jamie@nuviainc.com>
    Cc: 4.10+ <stable@vger.kernel.org> # 4.10+
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/acpi/acpi_dbg.c | 3 +++
    1 file changed, 3 insertions(+)

    --- a/drivers/acpi/acpi_dbg.c
    +++ b/drivers/acpi/acpi_dbg.c
    @@ -749,6 +749,9 @@ static int __init acpi_aml_init(void)
    {
    int ret;

    + if (acpi_disabled)
    + return -ENODEV;
    +
    /* Initialize AML IO interface */
    mutex_init(&acpi_aml_io.lock);
    init_waitqueue_head(&acpi_aml_io.wait);

    \
     
     \ /
      Last update: 2020-11-03 21:46    [W:4.021 / U:0.204 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site