habanalabs: wrong handle removal in memory manager
authorYuri Nudelman <ynudelman@habana.ai>
Sun, 27 Mar 2022 08:41:51 +0000 (11:41 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 22 May 2022 19:01:16 +0000 (21:01 +0200)
During the unified memory manager release, a wrong id was used to remove
an entry from the idr.

Signed-off-by: Yuri Nudelman <ynudelman@habana.ai>
Reviewed-by: Oded Gabbay <ogabbay@kernel.org>
Signed-off-by: Oded Gabbay <ogabbay@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/misc/habanalabs/common/memory_mgr.c

index 3828ba4..a1f499a 100644 (file)
@@ -48,7 +48,7 @@ static void hl_mmap_mem_buf_release(struct kref *kref)
                container_of(kref, struct hl_mmap_mem_buf, refcount);
 
        spin_lock(&buf->mmg->lock);
-       idr_remove(&buf->mmg->handles, buf->handle);
+       idr_remove(&buf->mmg->handles, lower_32_bits(buf->handle >> PAGE_SHIFT));
        spin_unlock(&buf->mmg->lock);
 
        if (buf->ops->release)