Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp21451874rwd; Thu, 29 Jun 2023 16:43:52 -0700 (PDT) X-Google-Smtp-Source: APBJJlHz8dlR9N01WfbmNTikXl30hq+CT/RDLDwYBOTONNXZHzcs6TjqOXAfnogiBuSI9bLr4C8B X-Received: by 2002:a17:90b:1912:b0:256:675f:1d49 with SMTP id mp18-20020a17090b191200b00256675f1d49mr1654823pjb.0.1688082232408; Thu, 29 Jun 2023 16:43:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1688082232; cv=none; d=google.com; s=arc-20160816; b=L3Rhok02v4FTqSU+Puktx7itWEpdOI8IesplAkkdbAAilGHJ9/sgOkBnt5BESPC0VQ TxifQoYrMfbdUZcO96r06SUq0dAbcbHhCq+1ek2xfHh8jIWa5kgKEOI7HR1WBnn+BeEU RmfvMobLzoBmapeEmasnWPQj+2r9HY0bptOAy/775efZpJNy851bO4JmOyoRTWME6RYG 84qHnE3jqOXJdWX5XifcgaFKpr7u513q3AgIKg35y6Bn49eKhl9JjBiBHqErZD+CkGzw Ypzu4Qb953AH4slZ/xnOkxR7q3b5c/03RV5jng1kLvAwYeO7y/AOw1lJM//5Wk9oOCgA S2QA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:feedback-id:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from; bh=b6nt0VtLN9PoDORpj3/mw2jx1EgRCIuW0ppt4XcES2A=; fh=GzghTQzqgly4pZn8BwQ4U8bZ8zCadAK8Sl/utskeyEs=; b=siWeIUccnlB36U9rkrH/IEKdlWE6anJJQwx60l+CczGfvTXSes+gSfrX4+NbLEEau6 y/6OubbrQpF/8vJLZg9oOdLEAyLidEwB+mw+dJKdAkuZMpuGDZTZTkabepRWjH4855zP rb8201ViwCM5aPfBQFtUocrRJc40oO6D/F4YAkq3/G35vnBZxKawdWegXV+s8vZePfL4 MmtwOhQ9n/23lqQgFQhCOaolGxfRJrvgskM0rHz192R/4I4ZDdRvkiUMOEyS0xLMEEaJ RP/U8dDVxdBWIXkJdJ5w4MbzWgxlMiBqnIPrlDHE46IT9898lp1U7eLblF/ZGqmgOhkO LcZg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id ob7-20020a17090b390700b002465d98f18csi5396437pjb.170.2023.06.29.16.43.38; Thu, 29 Jun 2023 16:43:52 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230487AbjF2Xaq (ORCPT + 99 others); Thu, 29 Jun 2023 19:30:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33968 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230036AbjF2Xam (ORCPT ); Thu, 29 Jun 2023 19:30:42 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.155.65.254]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 694EC1FE7; Thu, 29 Jun 2023 16:30:40 -0700 (PDT) X-QQ-mid: bizesmtp77t1688081430tg4lkoyb Received: from linux-lab-host.localdomain ( [119.123.131.49]) by bizesmtp.qq.com (ESMTP) with id ; Fri, 30 Jun 2023 07:30:29 +0800 (CST) X-QQ-SSF: 01200000000000D0W000000A0000000 X-QQ-FEAT: CR3LFp2JE4k2yCeR62ZuAGYUgkT1yq1gp7tSCx6PjhF/mNkyHruYzL79SeB7z CxTzPB7K2xFoUA/Ttaf/5FeV6L2uZdCkhc6XFd+y19TuqfuZXiEi8MxdsIwOmgQRqo4pRJU K9nE+AfOZFt1gnTXokRNuOjIyGH60R8MmM8qcVuceDH066+FiI3ebXS5ucV6i39M2LmgDgX jrMaXXzbKZXF1L/CX6tToO/a7QqbP3ZC94AEgLSNMjGkx1IUrGdvDHYo0t+4/y0ZadUrf9Q vKbj105VV3iJAVITKR8OC3793oJJQd58PXOK0m5ZJPs8AqexcipJTcZV9r6PDKW2fFm5tY3 UAyjZgTMxfiyqXCHysiWctOPNpjl1iIdiX5pdzoth3fQjGgjLzGMXhonNol+Q== X-QQ-GoodBg: 0 X-BIZMAIL-ID: 8005163360113825460 From: Zhangjin Wu To: thomas@t-8ch.de, w@1wt.eu Cc: falcon@tinylab.org, arnd@arndb.de, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org Subject: [PATCH v2 05/15] selftests/nolibc: fix up kernel parameters support Date: Fri, 30 Jun 2023 07:29:38 +0800 Message-Id: <582776208a75df19d09b8eaafcb6fdad7219abc8.1688078605.git.falcon@tinylab.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:tinylab.org:qybglogicsvrgz:qybglogicsvrgz5a-1 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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. Signed-off-by: Zhangjin Wu --- tools/testing/selftests/nolibc/nolibc-test.c | 33 ++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/nolibc/nolibc-test.c b/tools/testing/selftests/nolibc/nolibc-test.c index 96d170cc9b47..223c00e83abf 100644 --- a/tools/testing/selftests/nolibc/nolibc-test.c +++ b/tools/testing/selftests/nolibc/nolibc-test.c @@ -1063,6 +1063,35 @@ static const 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; @@ -1088,10 +1117,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 { -- 2.25.1