Patch "selftests/resctrl: Protect against array overrun during iMC config parsing" has been added to the 5.15-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    selftests/resctrl: Protect against array overrun during iMC config parsing

to the 5.15-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     selftests-resctrl-protect-against-array-overrun-duri.patch
and it can be found in the queue-5.15 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 772a3282378e21085e923d14bd069ff4e3285d9a
Author: Reinette Chatre <reinette.chatre@xxxxxxxxx>
Date:   Thu Oct 24 14:18:41 2024 -0700

    selftests/resctrl: Protect against array overrun during iMC config parsing
    
    [ Upstream commit 48ed4e799e8fbebae838dca404a8527763d41191 ]
    
    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: 1d3f08687d76 ("selftests/resctrl: Read memory bandwidth from perf IMC counter and from resctrl file system")
    Signed-off-by: Reinette Chatre <reinette.chatre@xxxxxxxxx>
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@xxxxxxxxxxxxxxx>
    Signed-off-by: Shuah Khan <skhan@xxxxxxxxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/tools/testing/selftests/resctrl/resctrl_val.c b/tools/testing/selftests/resctrl/resctrl_val.c
index 02110e7ee6361..04cb4aab51170 100644
--- a/tools/testing/selftests/resctrl/resctrl_val.c
+++ b/tools/testing/selftests/resctrl/resctrl_val.c
@@ -102,13 +102,12 @@ void get_event_and_umask(char *cas_count_cfg, int count, bool op)
 	char *token[MAX_TOKENS];
 	int i = 0;
 
-	strcat(cas_count_cfg, ",");
 	token[0] = strtok(cas_count_cfg, "=,");
 
 	for (i = 1; i < MAX_TOKENS; i++)
 		token[i] = strtok(NULL, "=,");
 
-	for (i = 0; i < MAX_TOKENS; i++) {
+	for (i = 0; i < MAX_TOKENS - 1; i++) {
 		if (!token[i])
 			break;
 		if (strcmp(token[i], "event") == 0) {




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux