Patch "selftests/nolibc: fix up kernel parameters support" has been added to the 6.1-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/nolibc: fix up kernel parameters support

to the 6.1-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-nolibc-fix-up-kernel-parameters-support.patch
and it can be found in the queue-6.1 subdirectory.

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



commit 74a991b46959eac113cb958ef656dbc50d3e38c6
Author: Zhangjin Wu <falcon@xxxxxxxxxxx>
Date:   Sat Jul 8 02:32:05 2023 +0800

    selftests/nolibc: fix up kernel parameters support
    
    [ Upstream commit c388c9920da2679f62bec48d00ca9e80e9d0a364 ]
    
    kernel parameters allow pass two types of strings, one type is like
    'noapic', another type is like 'panic=5', the first type is passed as
    arguments of the init program, the second type is passed as environment
    variables of the init program.
    
    when users pass kernel parameters like this:
    
        noapic NOLIBC_TEST=syscall
    
    our nolibc-test program will use the test setting from argv[1] and
    ignore the one from NOLIBC_TEST environment variable, and at last, it
    will print the following line and ignore the whole test setting.
    
        Ignoring unknown test name 'noapic'
    
    reversing the parsing order does solve the above issue:
    
        test = getenv("NOLIBC_TEST");
        if (test)
            test = argv[1];
    
    but it still doesn't work with such kernel parameters (without
    NOLIBC_TEST environment variable):
    
        noapic FOO=bar
    
    To support all of the potential kernel parameters, let's verify the test
    setting from both of argv[1] and NOLIBC_TEST environment variable.
    
    Reviewed-by: Thomas Weißschuh <linux@xxxxxxxxxxxxxx>
    Signed-off-by: Zhangjin Wu <falcon@xxxxxxxxxxx>
    Signed-off-by: Willy Tarreau <w@xxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/tools/testing/selftests/nolibc/nolibc-test.c b/tools/testing/selftests/nolibc/nolibc-test.c
index 78bced95ac630..f8e8e8d2a5e18 100644
--- a/tools/testing/selftests/nolibc/nolibc-test.c
+++ b/tools/testing/selftests/nolibc/nolibc-test.c
@@ -630,6 +630,35 @@ static struct test test_names[] = {
 	{ 0 }
 };
 
+int is_setting_valid(char *test)
+{
+	int idx, len, test_len, valid = 0;
+	char delimiter;
+
+	if (!test)
+		return valid;
+
+	test_len = strlen(test);
+
+	for (idx = 0; test_names[idx].name; idx++) {
+		len = strlen(test_names[idx].name);
+		if (test_len < len)
+			continue;
+
+		if (strncmp(test, test_names[idx].name, len) != 0)
+			continue;
+
+		delimiter = test[len];
+		if (delimiter != ':' && delimiter != ',' && delimiter != '\0')
+			continue;
+
+		valid = 1;
+		break;
+	}
+
+	return valid;
+}
+
 int main(int argc, char **argv, char **envp)
 {
 	int min = 0;
@@ -655,10 +684,10 @@ int main(int argc, char **argv, char **envp)
 	 *    syscall:5-15[:.*],stdlib:8-10
 	 */
 	test = argv[1];
-	if (!test)
+	if (!is_setting_valid(test))
 		test = getenv("NOLIBC_TEST");
 
-	if (test) {
+	if (is_setting_valid(test)) {
 		char *comma, *colon, *dash, *value;
 
 		do {



[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