Commit 01622098 authored by Ofir Bitton's avatar Ofir Bitton Committed by Oded Gabbay

habanalabs/gaudi: fix shift out of bounds

When validating NIC queues, queue offset calculation must be
performed only for NIC queues.
Signed-off-by: default avatarOfir Bitton <obitton@habana.ai>
Reviewed-by: default avatarOded Gabbay <ogabbay@kernel.org>
Signed-off-by: default avatarOded Gabbay <ogabbay@kernel.org>
parent d64a29af
......@@ -5692,15 +5692,17 @@ static int gaudi_parse_cb_no_ext_queue(struct hl_device *hdev,
{
struct asic_fixed_properties *asic_prop = &hdev->asic_prop;
struct gaudi_device *gaudi = hdev->asic_specific;
u32 nic_mask_q_id = 1 << (HW_CAP_NIC_SHIFT +
((parser->hw_queue_id - GAUDI_QUEUE_ID_NIC_0_0) >> 2));
u32 nic_queue_offset, nic_mask_q_id;
if ((parser->hw_queue_id >= GAUDI_QUEUE_ID_NIC_0_0) &&
(parser->hw_queue_id <= GAUDI_QUEUE_ID_NIC_9_3) &&
(!(gaudi->hw_cap_initialized & nic_mask_q_id))) {
dev_err(hdev->dev, "h/w queue %d is disabled\n",
parser->hw_queue_id);
return -EINVAL;
(parser->hw_queue_id <= GAUDI_QUEUE_ID_NIC_9_3)) {
nic_queue_offset = parser->hw_queue_id - GAUDI_QUEUE_ID_NIC_0_0;
nic_mask_q_id = 1 << (HW_CAP_NIC_SHIFT + (nic_queue_offset >> 2));
if (!(gaudi->hw_cap_initialized & nic_mask_q_id)) {
dev_err(hdev->dev, "h/w queue %d is disabled\n", parser->hw_queue_id);
return -EINVAL;
}
}
/* For internal queue jobs just check if CB address is valid */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment