diff options
author | Oded Gabbay <oded.gabbay@gmail.com> | 2020-07-12 22:34:57 +0200 |
---|---|---|
committer | Oded Gabbay <oded.gabbay@gmail.com> | 2020-07-19 07:15:36 +0200 |
commit | cea7a0449ea3fa4883bf5dc8397f000d6b67d6cd (patch) | |
tree | eabadfa2f4bb3c8eefe64c11e803ad5fd7d4c015 | |
parent | Merge tag 'misc-habanalabs-fixes-2020-07-10' of git://people.freedesktop.org/... (diff) | |
download | linux-cea7a0449ea3fa4883bf5dc8397f000d6b67d6cd.tar.xz linux-cea7a0449ea3fa4883bf5dc8397f000d6b67d6cd.zip |
habanalabs: prevent possible out-of-bounds array access
Queue index is received from the user. Therefore, we must validate it
before using it to access the queue props array.
Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com>
Reviewed-by: Tomer Tayar <ttayar@habana.ai>
-rw-r--r-- | drivers/misc/habanalabs/command_submission.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/drivers/misc/habanalabs/command_submission.c b/drivers/misc/habanalabs/command_submission.c index b0f62cbbdc87..f3a8f113865d 100644 --- a/drivers/misc/habanalabs/command_submission.c +++ b/drivers/misc/habanalabs/command_submission.c @@ -499,11 +499,19 @@ static int validate_queue_index(struct hl_device *hdev, struct asic_fixed_properties *asic = &hdev->asic_prop; struct hw_queue_properties *hw_queue_prop; + /* This must be checked here to prevent out-of-bounds access to + * hw_queues_props array + */ + if (chunk->queue_index >= HL_MAX_QUEUES) { + dev_err(hdev->dev, "Queue index %d is invalid\n", + chunk->queue_index); + return -EINVAL; + } + hw_queue_prop = &asic->hw_queues_props[chunk->queue_index]; - if ((chunk->queue_index >= HL_MAX_QUEUES) || - (hw_queue_prop->type == QUEUE_TYPE_NA)) { - dev_err(hdev->dev, "Queue index %d is invalid\n", + if (hw_queue_prop->type == QUEUE_TYPE_NA) { + dev_err(hdev->dev, "Queue index %d is not applicable\n", chunk->queue_index); return -EINVAL; } |