This is an automatic generated email to let you know that the following patch 
were queued:

Subject: media: venus: hfi: add checks to perform sanity on queue pointers
Author:  Vikash Garodia <quic_vgaro...@quicinc.com>
Date:    Thu Aug 10 07:55:01 2023 +0530

Read and write pointers are used to track the packet index in the memory
shared between video driver and firmware. There is a possibility of OOB
access if the read or write pointer goes beyond the queue memory size.
Add checks for the read and write pointer to avoid OOB access.

Cc: sta...@vger.kernel.org
Fixes: d96d3f30c0f2 ("[media] media: venus: hfi: add Venus HFI files")
Signed-off-by: Vikash Garodia <quic_vgaro...@quicinc.com>
Signed-off-by: Stanimir Varbanov <stanimir.k.varba...@gmail.com>
Signed-off-by: Hans Verkuil <hverkuil-ci...@xs4all.nl>

 drivers/media/platform/qcom/venus/hfi_venus.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

---

diff --git a/drivers/media/platform/qcom/venus/hfi_venus.c 
b/drivers/media/platform/qcom/venus/hfi_venus.c
index 19fc6575a489..f9437b6412b9 100644
--- a/drivers/media/platform/qcom/venus/hfi_venus.c
+++ b/drivers/media/platform/qcom/venus/hfi_venus.c
@@ -205,6 +205,11 @@ static int venus_write_queue(struct venus_hfi_device *hdev,
 
        new_wr_idx = wr_idx + dwords;
        wr_ptr = (u32 *)(queue->qmem.kva + (wr_idx << 2));
+
+       if (wr_ptr < (u32 *)queue->qmem.kva ||
+           wr_ptr > (u32 *)(queue->qmem.kva + queue->qmem.size - 
sizeof(*wr_ptr)))
+               return -EINVAL;
+
        if (new_wr_idx < qsize) {
                memcpy(wr_ptr, packet, dwords << 2);
        } else {
@@ -272,6 +277,11 @@ static int venus_read_queue(struct venus_hfi_device *hdev,
        }
 
        rd_ptr = (u32 *)(queue->qmem.kva + (rd_idx << 2));
+
+       if (rd_ptr < (u32 *)queue->qmem.kva ||
+           rd_ptr > (u32 *)(queue->qmem.kva + queue->qmem.size - 
sizeof(*rd_ptr)))
+               return -EINVAL;
+
        dwords = *rd_ptr >> 2;
        if (!dwords)
                return -EINVAL;

_______________________________________________
linuxtv-commits mailing list
linuxtv-commits@linuxtv.org
https://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to