linux-stable/tools
Reinette Chatre 1b4f406a29 selftests/resctrl: Protect against array overrun during iMC config parsing
[ Upstream commit 48ed4e799e ]

The MBM and MBA tests need to discover the event and umask with which to
configure the performance event used to measure read memory bandwidth.
This is done by parsing the
/sys/bus/event_source/devices/uncore_imc_<imc instance>/events/cas_count_read
file for each iMC instance that contains the formatted
output: "event=<event>,umask=<umask>"

Parsing of cas_count_read contents is done by initializing an array of
MAX_TOKENS elements with tokens (deliminated by "=,") from this file.
Remove the unnecessary append of a delimiter to the string needing to be
parsed. Per the strtok() man page: "delimiter bytes at the start or end of
the string are ignored". This has no impact on the token placement within
the array.

After initialization, the actual event and umask is determined by
parsing the tokens directly following the "event" and "umask" tokens
respectively.

Iterating through the array up to index "i < MAX_TOKENS" but then
accessing index "i + 1" risks array overrun during the final iteration.
Avoid array overrun by ensuring that the index used within for
loop will always be valid.

Fixes: 1d3f08687d ("selftests/resctrl: Read memory bandwidth from perf IMC counter and from resctrl file system")
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-12-05 13:53:05 +01:00
..
accounting
arch tools/x86/kcpuid: Protect against faulty "max subleaf" values 2024-10-10 12:03:19 +02:00
bootconfig
bpf bpftool: Fix undefined behavior in qsort(NULL, 0, ...) 2024-10-10 12:03:40 +02:00
build perf build: Fix build feature-dwarf_getlocations fail for old libdw 2024-10-17 15:26:32 +02:00
certs
cgroup proc: rewrite stable_page_flags() 2024-04-25 20:56:15 -07:00
counter
crypto
debugging
firewire
firmware
gpio gpio: add sloppy logic analyzer using polling 2024-07-01 10:54:11 +02:00
hv tools/hv: Add memory allocation check in hv_fcopy_start 2024-10-10 12:03:38 +02:00
iio tools/iio: Add memory allocation failure check for trigger_name 2024-10-17 15:26:40 +02:00
include bpf: Add the missing BPF_LINK_TYPE invocation for sockmap 2024-11-01 02:02:38 +01:00
kvm/kvm_stat
laptop
leds
lib thermal/lib: Fix memory leak on error in thermal_genl_auto() 2024-12-05 13:52:54 +01:00
memory-model kcsan: Add __data_racy documentation and module description 2024-07-15 15:44:40 -07:00
mm tools/mm: fix compile error 2024-11-22 15:39:50 +01:00
net/ynl tools/net/ynl: fix cli.py --subscribe feature 2024-09-05 14:56:45 -07:00
objtool objtool: Handle frame pointer related instructions 2024-10-04 16:38:37 +02:00
pci
pcmcia
perf perf python: Fix up the build on architectures without HAVE_KVM_STAT_SUPPORT 2024-11-08 16:30:45 +01:00
power pm:cpupower: Add missing powercap_set_enabled() stub function 2024-10-04 16:37:26 +02:00
rcu tools/rcu: Add rcu-updaters.sh script 2024-06-06 11:44:42 -07:00
scripts
sound ASoC: dapm-graph: new tool to visualize DAPM state 2024-04-21 09:58:17 +09:00
spi
testing selftests/resctrl: Protect against array overrun during iMC config parsing 2024-12-05 13:53:05 +01:00
thermal
time
tracing rtla: Fix the help text in osnoise and timerlat top tools 2024-10-10 12:04:10 +02:00
usb usbip: tools: Fix detach_port() invalid port error path 2024-11-08 16:30:53 +01:00
verification tools/verification: Use pkg-config in lib_setup of Makefile.config 2024-07-17 13:14:51 -07:00
virtio tools/virtio: creating pipe assertion in vringh_test 2024-07-04 11:00:31 -04:00
wmi
workqueue
writeback writeback: add wb_monitor.py script to monitor writeback info on bdi 2024-05-05 17:53:51 -07:00
Makefile