Linux Perf Users
 help / color / mirror / Atom feed
* [Patch v2 1/2] perf aslr: Add missing SIMD handling in aslr_tool__process_sample()
@ 2026-09-22  1:05 Dapeng Mi
  2026-09-22  1:05 ` [Patch v2 2/2] perf util: Explicitly include required headers Dapeng Mi
  2026-09-22  1:20 ` [Patch v2 1/2] perf aslr: Add missing SIMD handling in aslr_tool__process_sample() sashiko-bot
  0 siblings, 2 replies; 4+ messages in thread
From: Dapeng Mi @ 2026-09-22  1:05 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Namhyung Kim, Ian Rogers, Adrian Hunter, Alexander Shishkin
  Cc: linux-perf-users, linux-kernel, Zide Chen, Falcon Thomas,
	Dapeng Mi, Xudong Hao, Dapeng Mi

Currently the SIMD register sampling is supported, but the corresponding
handling is missed in aslr_tool__process_sample(). This can break parsing
of the sample record.

Add the missing SIMD register handling in aslr_tool__process_sample().

Signed-off-by: Dapeng Mi <dapeng1.mi@linux.intel.com>
Reviewed-by: Ian Rogers <irogers@google.com>
---

V2: Add missed "#undef CHECK_SIMD" and fix typo in short log (Ian).


 tools/perf/util/aslr.c | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/tools/perf/util/aslr.c b/tools/perf/util/aslr.c
index 027695d96779..697ac0d3d548 100644
--- a/tools/perf/util/aslr.c
+++ b/tools/perf/util/aslr.c
@@ -19,6 +19,7 @@
 #include <internal/lib.h>  /* page_size */
 #include <linux/compiler.h>
 #include <linux/zalloc.h>
+#include <linux/overflow.h>
 #include <errno.h>
 #include <inttypes.h>
 #include <unistd.h>
@@ -992,6 +993,34 @@ static int aslr_tool__process_sample(const struct perf_tool *tool,
 				COPY_U64();
 		}
 	}
+
+#define CHECK_SIMD() \
+	do { \
+		if (abi & PERF_SAMPLE_REGS_ABI_SIMD) { \
+			u64 nr_vector, vec_qwords; \
+			u64 nr_pred, pred_qwords; \
+			u64 header_len, vec_len, pred_len, simd_len; \
+			if (CHECK_BOUNDS(nr + 4, nr + 4)) { \
+				ret = -EFAULT; \
+				goto out_put; \
+			} \
+			header_len = 4;	\
+			nr_vector = in_array[i + nr]; \
+			vec_qwords = in_array[i + nr + 1]; \
+			nr_pred = in_array[i + nr + 2]; \
+			pred_qwords = in_array[i + nr + 3]; \
+			if (check_mul_overflow(nr_vector, vec_qwords, &vec_len) || \
+			    check_mul_overflow(nr_pred, pred_qwords, &pred_len) || \
+			    check_add_overflow(vec_len, pred_len, &simd_len) || \
+			    check_add_overflow(header_len, simd_len, &simd_len) || \
+			    check_add_overflow(nr, simd_len, &nr) || \
+			    nr > max_i - i) { \
+				ret = -EFAULT; \
+				goto out_put; \
+			} \
+		} \
+	} while (0)
+
 	if (orig_sample_type & PERF_SAMPLE_REGS_USER) {
 		u64 abi;
 
@@ -1007,6 +1036,7 @@ static int aslr_tool__process_sample(const struct perf_tool *tool,
 				ret = -EFAULT;
 				goto out_put;
 			}
+			CHECK_SIMD();
 			i += nr;
 		}
 	}
@@ -1061,6 +1091,7 @@ static int aslr_tool__process_sample(const struct perf_tool *tool,
 				ret = -EFAULT;
 				goto out_put;
 			}
+			CHECK_SIMD();
 			i += nr;
 		}
 	}
@@ -1154,6 +1185,7 @@ static int aslr_tool__process_sample(const struct perf_tool *tool,
 #undef CHECK_BOUNDS
 #undef COPY_U64
 #undef REMAP_U64
+#undef CHECK_SIMD
 
 static int skipn(int fd, off_t n)
 {

base-commit: 1c12f13c079c35a1e5ef2dd9e6aeea1810c58e87
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [Patch v2 2/2] perf util: Explicitly include required headers
  2026-09-22  1:05 [Patch v2 1/2] perf aslr: Add missing SIMD handling in aslr_tool__process_sample() Dapeng Mi
@ 2026-09-22  1:05 ` Dapeng Mi
  2026-09-22  1:16   ` sashiko-bot
  2026-09-22  1:20 ` [Patch v2 1/2] perf aslr: Add missing SIMD handling in aslr_tool__process_sample() sashiko-bot
  1 sibling, 1 reply; 4+ messages in thread
From: Dapeng Mi @ 2026-09-22  1:05 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Namhyung Kim, Ian Rogers, Adrian Hunter, Alexander Shishkin
  Cc: linux-perf-users, linux-kernel, Zide Chen, Falcon Thomas,
	Dapeng Mi, Xudong Hao, Dapeng Mi

Sashiko complains "the perf tool can be compiled with musl libc, which
enforces strict POSIX namespace separation and does not implicitly
include headers. Relying on implicit header inclusion can cause build
failures under musl."

Include the required headers explicitly to avoid such failures.

Signed-off-by: Dapeng Mi <dapeng1.mi@linux.intel.com>
Reviewed-by: Ian Rogers <irogers@google.com>
---
 tools/perf/util/parse-regs-options.c           | 1 +
 tools/perf/util/perf-regs-arch/perf_regs_x86.c | 2 ++
 tools/perf/util/session.c                      | 5 +++++
 3 files changed, 8 insertions(+)

diff --git a/tools/perf/util/parse-regs-options.c b/tools/perf/util/parse-regs-options.c
index 709fcfb077a2..e70393388fae 100644
--- a/tools/perf/util/parse-regs-options.c
+++ b/tools/perf/util/parse-regs-options.c
@@ -3,6 +3,7 @@
 #include <stdlib.h>
 #include <stdint.h>
 #include <string.h>
+#include <strings.h>
 #include <stdio.h>
 #include "util/debug.h"
 #include <dwarf-regs.h>
diff --git a/tools/perf/util/perf-regs-arch/perf_regs_x86.c b/tools/perf/util/perf-regs-arch/perf_regs_x86.c
index fb6cf34f42f2..ea1d402b0893 100644
--- a/tools/perf/util/perf-regs-arch/perf_regs_x86.c
+++ b/tools/perf/util/perf-regs-arch/perf_regs_x86.c
@@ -3,6 +3,8 @@
 #include <errno.h>
 #include <string.h>
 #include <regex.h>
+#include <unistd.h>
+#include <stdbool.h>
 #include <linux/kernel.h>
 #include <linux/zalloc.h>
 
diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c
index a5b596cd14be..04fba6fb02e8 100644
--- a/tools/perf/util/session.c
+++ b/tools/perf/util/session.c
@@ -1,4 +1,9 @@
 // SPDX-License-Identifier: GPL-2.0
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdbool.h>
+#include <string.h>
+#include <assert.h>
 #include <errno.h>
 #include <signal.h>
 #include <inttypes.h>
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [Patch v2 2/2] perf util: Explicitly include required headers
  2026-09-22  1:05 ` [Patch v2 2/2] perf util: Explicitly include required headers Dapeng Mi
@ 2026-09-22  1:16   ` sashiko-bot
  0 siblings, 0 replies; 4+ messages in thread
From: sashiko-bot @ 2026-09-22  1:16 UTC (permalink / raw)
  To: Dapeng Mi; +Cc: linux-perf-users

> Sashiko complains "the perf tool can be compiled with musl libc, which
> enforces strict POSIX namespace separation and does not implicitly
> include headers. Relying on implicit header inclusion can cause build
> failures under musl."
> 
> Include the required headers explicitly to avoid such failures.
> 
> Signed-off-by: Dapeng Mi <dapeng1.mi@linux.intel.com>

Sashiko has reviewed this patch and found no issues. It looks great!

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260922010531.1933320-1-dapeng1.mi@linux.intel.com?part=2


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Patch v2 1/2] perf aslr: Add missing SIMD handling in aslr_tool__process_sample()
  2026-09-22  1:05 [Patch v2 1/2] perf aslr: Add missing SIMD handling in aslr_tool__process_sample() Dapeng Mi
  2026-09-22  1:05 ` [Patch v2 2/2] perf util: Explicitly include required headers Dapeng Mi
@ 2026-09-22  1:20 ` sashiko-bot
  1 sibling, 0 replies; 4+ messages in thread
From: sashiko-bot @ 2026-09-22  1:20 UTC (permalink / raw)
  To: Dapeng Mi; +Cc: linux-perf-users

> Currently the SIMD register sampling is supported, but the corresponding
> handling is missed in aslr_tool__process_sample(). This can break parsing
> of the sample record.
> 
> Add the missing SIMD register handling in aslr_tool__process_sample().
> 
> Signed-off-by: Dapeng Mi <dapeng1.mi@linux.intel.com>

Sashiko has reviewed this patch and found no issues. It looks great!

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260922010531.1933320-1-dapeng1.mi@linux.intel.com?part=1


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-09-22  1:20 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-22  1:05 [Patch v2 1/2] perf aslr: Add missing SIMD handling in aslr_tool__process_sample() Dapeng Mi
2026-09-22  1:05 ` [Patch v2 2/2] perf util: Explicitly include required headers Dapeng Mi
2026-09-22  1:16   ` sashiko-bot
2026-09-22  1:20 ` [Patch v2 1/2] perf aslr: Add missing SIMD handling in aslr_tool__process_sample() sashiko-bot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox