accel/habanalabs: check return value of add_va_block_locked
authorDafna Hirschfeld <dhirschfeld@habana.ai>
Tue, 21 Mar 2023 14:17:37 +0000 (16:17 +0200)
committerOded Gabbay <ogabbay@kernel.org>
Sat, 8 Apr 2023 07:39:33 +0000 (10:39 +0300)
since the function might fail and we should propagate the failure.

Signed-off-by: Dafna Hirschfeld <dhirschfeld@habana.ai>
Reviewed-by: Oded Gabbay <ogabbay@kernel.org>
Signed-off-by: Oded Gabbay <ogabbay@kernel.org>
Reviewed-by: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
drivers/accel/habanalabs/common/memory.c

index 17b79d7..a7b6a27 100644 (file)
@@ -605,6 +605,7 @@ static u64 get_va_block(struct hl_device *hdev,
        bool is_align_pow_2  = is_power_of_2(va_range->page_size);
        bool is_hint_dram_addr = hl_is_dram_va(hdev, hint_addr);
        bool force_hint = flags & HL_MEM_FORCE_HINT;
+       int rc;
 
        if (is_align_pow_2)
                align_mask = ~((u64)va_block_align - 1);
@@ -722,9 +723,13 @@ static u64 get_va_block(struct hl_device *hdev,
                kfree(new_va_block);
        }
 
-       if (add_prev)
-               add_va_block_locked(hdev, &va_range->list, prev_start,
-                               prev_end);
+       if (add_prev) {
+               rc = add_va_block_locked(hdev, &va_range->list, prev_start, prev_end);
+               if (rc) {
+                       reserved_valid_start = 0;
+                       goto out;
+               }
+       }
 
        print_va_list_locked(hdev, &va_range->list);
 out: