From 4668cd30d974d401eb5d5f1cd294c4210af63990 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Thu, 11 Mar 2021 21:54:36 +0100 Subject: [PATCH] radeonsi/sqtt: fix user event max size MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Larger strings can corrupt rgp files. Fixes: 5dc823304b1 ("radeonsi/sqtt: forward string markers to sqtt") Reviewed-by: Zoltán Böszörményi Reviewed-by: James Zhu Reviewed-by: Boyuan Zhang Reviewed-by: Marek Olšák Part-of: --- src/gallium/drivers/radeonsi/si_sqtt.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/radeonsi/si_sqtt.c b/src/gallium/drivers/radeonsi/si_sqtt.c index b6c10ba5c8b..dcd40c12913 100644 --- a/src/gallium/drivers/radeonsi/si_sqtt.c +++ b/src/gallium/drivers/radeonsi/si_sqtt.c @@ -828,12 +828,13 @@ si_write_user_event(struct si_context* sctx, struct radeon_cmdbuf *rcs, struct rgp_sqtt_marker_user_event_with_length marker = { 0 }; marker.user_event.identifier = RGP_SQTT_MARKER_IDENTIFIER_USER_EVENT; marker.user_event.data_type = type; + len = MIN2(1024, len); marker.length = align(len, 4); uint8_t *buffer = alloca(sizeof(marker) + marker.length); - memset(buffer, 0, sizeof(marker) + marker.length); memcpy(buffer, &marker, sizeof(marker)); memcpy(buffer + sizeof(marker), str, len); + buffer[sizeof(marker) + len - 1] = '\0'; si_emit_thread_trace_userdata(sctx, rcs, buffer, sizeof(marker) / 4 + marker.length / 4); }