From 350839a5f149506f178b15e403d491e4b7b13570 Mon Sep 17 00:00:00 2001 From: Benjamin Lee Date: Fri, 28 Mar 2025 22:04:32 -0700 Subject: [PATCH] panvk/csf: fix uninitialized read in utrace_clone_init_builder Previous code assumed that the caller of utrace_clone_init_builder would fill some parameters of the builder config, but we were not. Instead, initialize these from the csif props the same as all the other builder instances. Signed-off-by: Benjamin Lee Fixes: 3096cf2a5dd ("panvk/csf: flush and process trace events for all cmdbufs") Reviewed-by: Eric R. Smith Reviewed-by: Boris Brezillon Part-of: (cherry picked from commit e183650aa41bd3d8f7ae23d65e0d49449a39f8c3) --- .pick_status.json | 2 +- src/panfrost/vulkan/csf/panvk_vX_utrace.c | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 902111dc2e8..86000105bff 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -364,7 +364,7 @@ "description": "panvk/csf: fix uninitialized read in utrace_clone_init_builder", "nominated": true, "nomination_type": 2, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "3096cf2a5ddd851cf60c835e013377ccbce0e3eb", "notes": null diff --git a/src/panfrost/vulkan/csf/panvk_vX_utrace.c b/src/panfrost/vulkan/csf/panvk_vX_utrace.c index 3e3ccc53fe8..42a331339d1 100644 --- a/src/panfrost/vulkan/csf/panvk_vX_utrace.c +++ b/src/panfrost/vulkan/csf/panvk_vX_utrace.c @@ -5,6 +5,8 @@ #include "panvk_utrace.h" +#include "drm-uapi/panthor_drm.h" + #include "genxml/cs_builder.h" #include "panvk_cmd_buffer.h" #include "panvk_device.h" @@ -148,9 +150,11 @@ void panvk_per_arch(utrace_clone_init_builder)(struct cs_builder *b, struct panvk_pool *pool) { + const struct drm_panthor_csif_info *csif_info = + panthor_kmod_get_csif_props(pool->dev->kmod.dev); const struct cs_builder_conf builder_conf = { - .nr_registers = 96, - .nr_kernel_registers = 4, + .nr_registers = csif_info->cs_reg_count, + .nr_kernel_registers = MAX2(csif_info->unpreserved_cs_reg_count, 4), .alloc_buffer = alloc_clone_buffer, .cookie = pool, };