On 29-May-26 14:06, Wachowski, Karol wrote:
On 29-May-26 13:58, Andrzej Kacprowski wrote:
Add validation that read and write indices in the firmware log buffer
are within valid bounds (< data_size) before using them. If
out-of-bounds indices are encountered (from firmware), clamp them to
safe values instead of proceeding with invalid offsets.

This prevents potential out-of-bounds buffer access when firmware
supplies invalid log indices.

Fixes: 1fc1251149a7 ("accel/ivpu: Refactor functions in ivpu_fw_log.c")
Cc: <[email protected]> # v6.18+
Signed-off-by: Andrzej Kacprowski <[email protected]>

Reviewed-by: Karol Wachowski <[email protected]>


Applied to drm-misc-fixes.

---
  drivers/accel/ivpu/ivpu_fw_log.c | 5 +++++
  1 file changed, 5 insertions(+)

diff --git a/drivers/accel/ivpu/ivpu_fw_log.c b/drivers/accel/ivpu/ ivpu_fw_log.c
index 337c906b0210..275baf844b56 100644
--- a/drivers/accel/ivpu/ivpu_fw_log.c
+++ b/drivers/accel/ivpu/ivpu_fw_log.c
@@ -98,6 +98,11 @@ static void fw_log_print_buffer(struct vpu_tracing_buffer_header *log, const cha
      u32 log_start = only_new_msgs ? READ_ONCE(log->read_index) : 0;
      u32 log_end = READ_ONCE(log->write_index);
+    if (log_start >= data_size)
+        log_start = 0;
+    if (log_end > data_size)
+        log_end = data_size;
+
      if (log->wrap_count == log->read_wrap_count) {
          if (log_end <= log_start) {
              drm_printf(p, "==== %s \"%s\" log empty ====\n", prefix, log->name);



Reply via email to