• G
    mm/sharepool: fix deadlock in spa_stat_of_mapping_show · 608669b7
    Guo Mengqi 提交于
    hulk inclusion
    category: bugfix
    bugzilla: https://gitee.com/openeuler/kernel/issues/I5OE1J
    CVE: NA
    
    --------------------------------
    
    The mutex protecting spm_dvpp_list has an ABBA deadlock with
    spg->rw_lock. Try add a process to a sharepool group and cat
    /proc/sharepool/spa_stat at the same time will reproduce the
    problem.
    
    Remove spg->rw_lock to avoid this.
    
    [ 1101.013480]INFO: task test:3567 blocked for more than 30 seconds.
    [ 1101.014378]      Tainted: G           OE     5.10.0+ #45
    [ 1101.015707]task:test state:D stack:    0 pid: 3567
    [ 1101.016464]Call trace:
    [ 1101.016736] __switch_to+0xc0/0x128
    [ 1101.017082] __schedule+0x3fc/0x898
    [ 1101.017626] schedule+0x48/0xd8
    [ 1101.017981] schedule_preempt_disabled+0x14/0x20
    [ 1101.018519] __mutex_lock.isra.1+0x160/0x638
    [ 1101.018899] __mutex_lock_slowpath+0x24/0x30
    [ 1101.019291] mutex_lock+0x5c/0x68
    [ 1101.019607] sp_mapping_create+0x118/0x1b0
    [ 1101.019963] sp_init_group_master_locked.part.9+0x10c/0x288
    [ 1101.020356] mg_sp_group_add_task.part.16+0x7dc/0xcd0
    [ 1101.020750] mg_sp_group_add_task+0x54/0xd0
    [ 1101.021120] dev_ioctl+0x360/0x1e20 [sharepool_dev]
    [ 1101.022171] __arm64_sys_ioctl+0xb0/0xe8
    [ 1101.022695] el0_svc_common.constprop.0+0x88/0x268
    [ 1101.023143] do_el0_svc+0x34/0xb8
    [ 1101.023487] el0_svc+0x1c/0x28
    [ 1101.023775] el0_sync_handler+0x8c/0xb0
    [ 1101.024120] el0_sync+0x168/0x180
    Signed-off-by: NGuo Mengqi <guomengqi3@huawei.com>
    608669b7
share_pool.c 111.1 KB