• Leo Liu's avatar
    drm/amdgpu: fix UBSAN: Undefined behaviour for amdgpu_fence.c · d9e98ee2
    Leo Liu authored
    Here is the UBSAN dump:
    
    [    3.866656] index 2 is out of range for type 'amdgpu_uvd_inst [2]'
    [    3.866693] Workqueue: events work_for_cpu_fn
    [    3.866702] Call Trace:
    [    3.866710]  dump_stack+0x85/0xc5
    [    3.866719]  ubsan_epilogue+0x9/0x40
    [    3.866727]  __ubsan_handle_out_of_bounds+0x89/0x90
    [    3.866737]  ? rcu_read_lock_sched_held+0x58/0x60
    [    3.866746]  ? __kmalloc+0x26c/0x2d0
    [    3.866846]  amdgpu_fence_driver_start_ring+0x259/0x280 [amdgpu]
    [    3.866896]  amdgpu_ring_init+0x12c/0x710 [amdgpu]
    [    3.866906]  ? sprintf+0x42/0x50
    [    3.866956]  amdgpu_gfx_kiq_init_ring+0x1bc/0x3a0 [amdgpu]
    [    3.867009]  gfx_v8_0_sw_init+0x1ad3/0x2360 [amdgpu]
    [    3.867062]  ? smu7_init+0xec/0x160 [amdgpu]
    [    3.867109]  amdgpu_device_init+0x112c/0x1dc0 [amdgpu]
    
    'ring->me' might be set as 2 with 'amdgpu_gfx_kiq_init_ring', that would
    cause out of range for 'amdgpu_uvd_inst[2]'.
    
    v2: simplified with ring type
    Signed-off-by: default avatarLeo Liu <leo.liu@amd.com>
    Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
    Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
    d9e98ee2
amdgpu_fence.c 19.3 KB