<div dir="ltr">Hi,<br><br>With the help of a static bug finder (EBA - <a href="https://github.com/IagoAbal/eba">https://github.com/IagoAbal/eba</a>) I have found a potential double lock in Linux Next tag next-20191115, file drivers/gpu/drm/amd/amdgpu/amdgpu_device.c.<br><br>This bug seems to be introduced by commit<br>e35e2b117f4 ("drm/amdgpu: add a generic fb accessing helper function(v3)").<br><br>The steps to reproduce it would be:<br><br>1. Start in function `amdgpu_device_vram_access`.<br>2. Enter for-loop `for (last += pos; pos <= last; pos += 4)`.<br>3. First lock: `spin_lock_irqsave(&adev->mmio_idx_lock, flags)`.<br>4. Call to `WREG32_NO_KIQ(mmMM_INDEX, ((uint32_t)pos) | 0x80000000)`.<br>   5. Note `#define WREG32_NO_KIQ(reg, v) amdgpu_mm_wreg(adev, (reg), (v), AMDGPU_REGS_NO_KIQ)`.<br>   6. Continue in function `amdgpu_mm_wreg`.<div>   7. Take else-branch in the third if-statement.<br>   8. Double lock: `spin_lock_irqsave(&adev->mmio_idx_lock, flags)`.<br><br>I think the control flow could reach that second lock, but you may know better.</div><div><br>Hope it helps!<br clear="all"><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><br>-- iago</div></div></div></div>