From: Xiaogang Chen <[email protected]>

If inx from find_first_zero_bit is beyond range not need set doorbell_bitmap.

Signed-off-by: Xiaogang Chen <[email protected]>
---
 drivers/gpu/drm/amd/amdkfd/kfd_doorbell.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_doorbell.c 
b/drivers/gpu/drm/amd/amdkfd/kfd_doorbell.c
index 05c74887fd6f..18785d3bec4b 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_doorbell.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_doorbell.c
@@ -153,14 +153,16 @@ void __iomem *kfd_get_kernel_doorbell(struct kfd_dev *kfd,
        u32 inx;
 
        mutex_lock(&kfd->doorbell_mutex);
+
        inx = find_first_zero_bit(kfd->doorbell_bitmap, PAGE_SIZE / 
sizeof(u32));
+       if (inx >= KFD_MAX_NUM_OF_QUEUES_PER_PROCESS){
+               mutex_unlock(&kfd->doorbell_mutex);
+               return NULL;
+       }
 
        __set_bit(inx, kfd->doorbell_bitmap);
        mutex_unlock(&kfd->doorbell_mutex);
 
-       if (inx >= KFD_MAX_NUM_OF_QUEUES_PER_PROCESS)
-               return NULL;
-
        *doorbell_off = amdgpu_doorbell_index_on_bar(kfd->adev,
                                                     kfd->doorbells,
                                                     inx,
-- 
2.34.1

Reply via email to