summaryrefslogtreecommitdiff
path: root/drivers/misc/habanalabs/goya/goya_coresight.c
diff options
context:
space:
mode:
authorOfir Bitton <obitton@habana.ai>2020-08-06 11:33:27 +0300
committerOded Gabbay <oded.gabbay@gmail.com>2020-08-22 12:47:57 +0300
commit36545279f076afeb77104f5ffeab850da3b6d107 (patch)
tree44166f350a9a7059d09edc184434d0eab49a02e6 /drivers/misc/habanalabs/goya/goya_coresight.c
parentf44d23b9095abd91dad9f5f3add2a3149833ec83 (diff)
habanalabs: proper handling of alloc size in coresight
Allocation size can go up to 64bit but truncated to 32bit, we should make sure it is not truncated and validate no address overflow. Signed-off-by: Ofir Bitton <obitton@habana.ai> Reviewed-by: Oded Gabbay <oded.gabbay@gmail.com> Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com>
Diffstat (limited to 'drivers/misc/habanalabs/goya/goya_coresight.c')
-rw-r--r--drivers/misc/habanalabs/goya/goya_coresight.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/misc/habanalabs/goya/goya_coresight.c b/drivers/misc/habanalabs/goya/goya_coresight.c
index b03912483de0..4027a6a334d7 100644
--- a/drivers/misc/habanalabs/goya/goya_coresight.c
+++ b/drivers/misc/habanalabs/goya/goya_coresight.c
@@ -362,11 +362,17 @@ static int goya_config_etf(struct hl_device *hdev,
}
static int goya_etr_validate_address(struct hl_device *hdev, u64 addr,
- u32 size)
+ u64 size)
{
struct asic_fixed_properties *prop = &hdev->asic_prop;
u64 range_start, range_end;
+ if (addr > (addr + size)) {
+ dev_err(hdev->dev,
+ "ETR buffer size %llu overflow\n", size);
+ return false;
+ }
+
if (hdev->mmu_enable) {
range_start = prop->dmmu.start_addr;
range_end = prop->dmmu.end_addr;