habanalabs: avoid returning a valid handle if map_block() fails
map_block() sets the block id handle even if get_hw_block_id() fails, and in this case it uses block id 0 which might be a valid id. Modify it to set the handle only if get_hw_block_id() succeeds. Signed-off-by: Tomer Tayar <ttayar@habana.ai> Reviewed-by: Oded Gabbay <ogabbay@kernel.org> Signed-off-by: Oded Gabbay <ogabbay@kernel.org>
This commit is contained in:
parent
0c876b47a5
commit
7fa6c0fe8b
@ -1418,18 +1418,23 @@ vm_type_err:
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int map_block(struct hl_device *hdev, u64 address, u64 *handle,
|
static int map_block(struct hl_device *hdev, u64 address, u64 *handle, u32 *size)
|
||||||
u32 *size)
|
|
||||||
{
|
{
|
||||||
u32 block_id = 0;
|
u32 block_id;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
|
*handle = 0;
|
||||||
|
if (size)
|
||||||
|
*size = 0;
|
||||||
|
|
||||||
rc = hdev->asic_funcs->get_hw_block_id(hdev, address, size, &block_id);
|
rc = hdev->asic_funcs->get_hw_block_id(hdev, address, size, &block_id);
|
||||||
|
if (rc)
|
||||||
|
return rc;
|
||||||
|
|
||||||
*handle = block_id | HL_MMAP_TYPE_BLOCK;
|
*handle = block_id | HL_MMAP_TYPE_BLOCK;
|
||||||
*handle <<= PAGE_SHIFT;
|
*handle <<= PAGE_SHIFT;
|
||||||
|
|
||||||
return rc;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void hw_block_vm_close(struct vm_area_struct *vma)
|
static void hw_block_vm_close(struct vm_area_struct *vma)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user