habanalabs: fix bug when setting va block size
authorDafna Hirschfeld <dhirschfeld@habana.ai>
Mon, 8 Aug 2022 11:03:44 +0000 (14:03 +0300)
committerOded Gabbay <ogabbay@kernel.org>
Sun, 18 Sep 2022 10:29:52 +0000 (13:29 +0300)
the size of a block is always 'block->end - block->start + 1'

Signed-off-by: Dafna Hirschfeld <dhirschfeld@habana.ai>
Reviewed-by: Oded Gabbay <ogabbay@kernel.org>
Signed-off-by: Oded Gabbay <ogabbay@kernel.org>
drivers/misc/habanalabs/common/memory.c

index 5bc704d..e3b40db 100644 (file)
@@ -457,7 +457,7 @@ static void merge_va_blocks_locked(struct hl_device *hdev,
        prev = list_prev_entry(va_block, node);
        if (&prev->node != va_list && prev->end + 1 == va_block->start) {
                prev->end = va_block->end;
-               prev->size = prev->end - prev->start;
+               prev->size = prev->end - prev->start + 1;
                list_del(&va_block->node);
                kfree(va_block);
                va_block = prev;
@@ -466,7 +466,7 @@ static void merge_va_blocks_locked(struct hl_device *hdev,
        next = list_next_entry(va_block, node);
        if (&next->node != va_list && va_block->end + 1 == next->start) {
                next->start = va_block->start;
-               next->size = next->end - next->start;
+               next->size = next->end - next->start + 1;
                list_del(&va_block->node);
                kfree(va_block);
        }