• Douglas Anderson's avatar
    drm/msm/a6xx: Allocate enough space for GMU registers · b4d25abf
    Douglas Anderson authored
    In commit 142639a5 ("drm/msm/a6xx: fix crashstate capture for
    A650") we changed a6xx_get_gmu_registers() to read 3 sets of
    registers. Unfortunately, we didn't change the memory allocation for
    the array. That leads to a KASAN warning (this was on the chromeos-5.4
    kernel, which has the problematic commit backported to it):
    
      BUG: KASAN: slab-out-of-bounds in _a6xx_get_gmu_registers+0x144/0x430
      Write of size 8 at addr ffffff80c89432b0 by task A618-worker/209
      CPU: 5 PID: 209 Comm: A618-worker Tainted: G        W         5.4.156-lockdep #22
      Hardware name: Google Lazor Limozeen without Touchscreen (rev5 - rev8) (DT)
      Call trace:
       dump_backtrace+0x0/0x248
       show_stack+0x20/0x2c
       dump_stack+0x128/0x1ec
       print_address_description+0x88/0x4a0
       __kasan_report+0xfc/0x120
       kasan_report+0x10/0x18
       __asan_report_store8_noabort+0x1c/0x24
       _a6xx_get_gmu_registers+0x144/0x430
       a6xx_gpu_state_get+0x330/0x25d4
       msm_gpu_crashstate_capture+0xa0/0x84c
       recover_worker+0x328/0x838
       kthread_worker_fn+0x32c/0x574
       kthread+0x2dc/0x39c
       ret_from_fork+0x10/0x18
    
      Allocated by task 209:
       __kasan_kmalloc+0xfc/0x1c4
       kasan_kmalloc+0xc/0x14
       kmem_cache_alloc_trace+0x1f0/0x2a0
       a6xx_gpu_state_get+0x164/0x25d4
       msm_gpu_crashstate_capture+0xa0/0x84c
       recover_worker+0x328/0x838
       kthread_worker_fn+0x32c/0x574
       kthread+0x2dc/0x39c
       ret_from_fork+0x10/0x18
    
    Fixes: 142639a5 ("drm/msm/a6xx: fix crashstate capture for A650")
    Signed-off-by: default avatarDouglas Anderson <dianders@chromium.org>
    Link: https://lore.kernel.org/r/20211103153049.1.Idfa574ccb529d17b69db3a1852e49b580132035c@changeidSigned-off-by: default avatarRob Clark <robdclark@chromium.org>
    b4d25abf
a6xx_gpu_state.c 30.9 KB