Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

rtla/timerlat: Add bounds check for softirq vector

Add bounds checking when accessing the softirq_name array using the
vector value from kernel trace data. The vector field from the
osnoise:softirq_noise event is used directly as an array index without
validation, which could cause an out-of-bounds read if the kernel
provides an unexpected vector value.

The softirq_name array contains 10 elements corresponding to the
standard Linux softirq vectors. While the kernel should only provide
valid vector values in the range 0-9, defensive programming requires
validating untrusted input before using it as an array index. If an
out-of-range vector is encountered, display the word UNKNOWN instead
of attempting to read beyond the array bounds.

Signed-off-by: Wander Lairson Costa <wander@redhat.com>
Link: https://lore.kernel.org/r/20260309195040.1019085-9-wander@redhat.com
Signed-off-by: Tomas Glozar <tglozar@redhat.com>

authored by

Wander Lairson Costa and committed by
Tomas Glozar
d6515424 f79720e2

+2 -2
+2 -2
tools/tracing/rtla/src/timerlat_aa.c
··· 417 417 taa_data->thread_softirq_sum += duration; 418 418 419 419 trace_seq_printf(taa_data->softirqs_seq, " %24s:%-3llu %.*s %9.2f us\n", 420 - softirq_name[vector], vector, 421 - 24, spaces, 420 + vector < ARRAY_SIZE(softirq_name) ? softirq_name[vector] : "UNKNOWN", 421 + vector, 24, spaces, 422 422 ns_to_usf(duration)); 423 423 return 0; 424 424 }