• Rob Clark's avatar
    drm/msm: Fix crash on dev file close · 654e9c18
    Rob Clark authored
    If the device file was opened prior to fw being available (such as from
    initrd before rootfs is mounted, when the initrd does not contain GPU
    fw), that would cause a later crash when the dev file is closed due to
    unitialized submitqueues list:
    
       CPU: 4 PID: 263 Comm: plymouthd Tainted: G        W         5.15.0-rc2-next-20210924 #2
       Hardware name: LENOVO 81JL/LNVNB161216, BIOS 9UCN33WW(V2.06) 06/ 4/2019
       pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
       pc : msm_submitqueue_close+0x30/0x190 [msm]
       lr : msm_postclose+0x54/0xf0 [msm]
       sp : ffff80001074bb80
       x29: ffff80001074bb80 x28: ffff03ad80c4db80 x27: ffff03ad80dc5ab0
       x26: 0000000000000000 x25: ffff03ad80dc5af8 x24: ffff03ad81e90800
       x23: 0000000000000000 x22: ffff03ad81e90800 x21: ffff03ad8b35e788
       x20: ffff03ad81e90878 x19: 0000000000000000 x18: 0000000000000000
       x17: 0000000000000000 x16: ffffda15f14f7940 x15: 0000000000000000
       x14: 0000000000000000 x13: 0000000000000001 x12: 0000000000000040
       x11: 0000000000000000 x10: 0000000000000000 x9 : ffffda15cd18ff88
       x8 : ffff03ad80c4db80 x7 : 0000000000000228 x6 : 0000000000000000
       x5 : 1793a4e807e636bd x4 : ffff03ad80c4db80 x3 : ffff03ad81e90878
       x2 : 0000000000000000 x1 : ffff03ad80c4db80 x0 : 0000000000000000
       Call trace:
        msm_submitqueue_close+0x30/0x190 [msm]
        msm_postclose+0x54/0xf0 [msm]
        drm_file_free.part.0+0x1cc/0x2e0 [drm]
        drm_close_helper.isra.0+0x74/0x84 [drm]
        drm_release+0x78/0x120 [drm]
        __fput+0x78/0x23c
        ____fput+0x1c/0x30
        task_work_run+0xcc/0x22c
        do_exit+0x304/0x9f4
        do_group_exit+0x44/0xb0
        __wake_up_parent+0x0/0x3c
        invoke_syscall+0x50/0x120
        el0_svc_common.constprop.0+0x4c/0xf4
        do_el0_svc+0x30/0x9c
        el0_svc+0x20/0x60
        el0t_64_sync_handler+0xe8/0xf0
        el0t_64_sync+0x1a0/0x1a4
       Code: aa0003f5 a90153f3 f8408eb3 aa1303e0 (f85e8674)
       ---[ end trace 39b2fa37509a2be2 ]---
       Fixing recursive fault but reboot is needed!
    
    Fixes: 86c2a0f0 drm/msm: ("Small submitqueue creation cleanup")
    Reported-by: default avatarSteev Klimaszewski <steev@kali.org>
    Signed-off-by: default avatarRob Clark <robdclark@chromium.org>
    654e9c18
msm_submitqueue.c 4.4 KB