From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj2-f11.google.com (mail-pj2-f11.google.com [74.125.227.139]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 487B0489FCF for ; Thu, 10 Sep 2026 12:57:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.227.139 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789045023; cv=none; b=BgwgETzlSgiyLIuUV4EA07xK1OhCMaB5+CXT6g00mNzHOmkTjaSIJbI+t6SKrMvabyuPUqh7kDrd6XZxLDzAFniKHX44sRZLGtO3DqkjqBS4lCtmzWLwTr+kymp8WY4fjceCLc2JyGKN6lhpUxxPgQQ4nodqKOc3iIkH2KARaFs= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789045023; c=relaxed/simple; bh=0X+AdhuUJlHtyLQafhDA6Ri0tmdjnAfvmKJFKTMJlxU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=iqTcg2SyuIC10vZyJGr4Sngpj8Lm8A8rzCsHItBiMk656gUFLe65vIg+wFwW47KZoEjg+kTslvqIw/ROJyhFOML58gTcrOB4biOC/8CbiVwLvESuIynKitDk+IpQVM+XIYIe4NtwMfe7MB/xmfpfxxrpfo+7O7nCZShfnjJ48DE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=lCo57O0E; arc=none smtp.client-ip=74.125.227.139 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="lCo57O0E" Received: by mail-pj2-f11.google.com with SMTP id 98e67ed59e1d1-396a51b2605so2892771a91.0 for ; Thu, 10 Sep 2026 05:57:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1789045020; x=1789649820; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=HVOi/Y3C1iRUwyA09cZKyOyweLLbf7+xSIA4QpyhUZQ=; b=lCo57O0EZfDD/fYBtVv6D39Nfu+PniGRijWIaBH/JszGEVh1vFdW5VQ3IzdFs1qLuX ze6w4iEbmlwTg6IN+RyisvMLYwzAScF4Tuhes3NH1iYE6crnO9n3bB94kziAP9Qv9SpG M9ChfAjZmTWnsYdyI3zJ0mbZ4ptZaslrzD5/FFHEfCMbKnKi143kKilaI2kVvI8pMHc/ Tnu0P29swK5xxr0UQglMuF+BTe0DxpaCkBs62avNCU0xlvlfRJ6Y+LKTG5e56ZFNnlNP nky73R7X7V7yCz5v2I9v/pawjoL51kOgJe5Ag8jsqhJJNl78qWl93BQNzwDrBxFqpjQw dnGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789045020; x=1789649820; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=HVOi/Y3C1iRUwyA09cZKyOyweLLbf7+xSIA4QpyhUZQ=; b=mm8IuqF1ton3SD7KvAIACUxVUtPQogiTlUrq5cxUhhZmadexfb7VWcVv/3DvN+YQAy DsLQ3ExOqPcb6a2+D8aU23mrjR7BksOeHoD04VY4//zr/v43lDKWOh9z5YRIcVI2OPS7 W/THXD2c33AtfVheXuPuqp4kk52YAPlYNxc5Wj/5VZRatqF4lFQtUPhxfaw4lgl8IPuL OBTo81QM9u5mUfyn1WCscR7JslP940qZ20BAXiCtFaHB/tNQTjhTGWgJQ+rhTPnpJRG8 5dJID9y/j36ynV5y0CWajAFwfqefJtzMH1aR+Z2qTiGAGAjQ8Js4oK+BUKY3H8QX1pPX bTjw== X-Forwarded-Encrypted: i=1; AKwUvBywhhKXU3Zy2D8EFIRvydtHJwIbSzujk9/CQ/Vz6kHBAzypJ7nysGefhrPo/fwZWzpuLbXKfLf9utMRf84=@vger.kernel.org X-Gm-Message-State: AFuF++mwkUFX1TsWbCmG7H62WEw/yEf1iyLMsQnWdRYmwbbEe4HqVqF+ Zz98Smi2KfAfOKA1iX2X+vhc2YZNKrZqaAMHmaPTfbHZ1F+pFKbLNDGf X-Gm-Gg: AYBFou071zbm3YIG2JwTncsO2xGX3Cwl9guOettKTIfbXJUtz2LZwz+x+yFRh2Y7k0o 9Kzg4A2OgEJTnBekef0Occk7ZOmR6ZUm2MXgtZA3jhAlsjtwzBaqcaHSURiz8wP3fP2FXCzFxiE 0vX7/MGNwE9ZWLVSxXbXK6l/xnYm15MU7eOdR6Vwg2EQ9DUzqWxKckOZ0OrzQxoR/m41LfnyloA f2RQ7gU31iNSW8PQWpuHs1DURZIhMbcGdiVmZ7BV3aLdPzy3S7TfYE+zN/GYdz13LGpuKZ1cfOA GH4eQkMvcH3jIDl/Km67BcLeiTTgUX7X7jLNjVSqmVlOWVJ8gI1/I/tVN18zbGqytPYy5ZlRx86 FfI+OarpBJ32o0fU825LaxfpDgByp94ROCeN/kwVQJRrGhfLOj6AY+TjM3+SoKZEBYd94BJtmNa CxMkLe+8XMqTPfr9dKN8NaChCjwy/f1F4k910IjuBX1LneHVWh9yoyJ8sFCPQ5jukDRQHsug== X-Received: by 2002:a17:90b:4fc5:b0:37f:e1b6:4c7d with SMTP id 98e67ed59e1d1-39b26190c25mr61000735a91.6.1789045020263; Thu, 10 Sep 2026 05:57:00 -0700 (PDT) Received: from fedora ([69.5.53.41]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-39d7e9014cbsm4800488a91.16.2026.09.10.05.56.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Sep 2026 05:56:59 -0700 (PDT) From: Tianyi Chen To: Andrew Morton , David Hildenbrand Cc: Shuah Khan , linux-mm@kvack.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, Joel Savitz Subject: [PATCH v3 RESEND 1/2] selftests/mm: Reject invalid test selections before running tests Date: Thu, 10 Sep 2026 20:56:44 +0800 Message-ID: <20260910125645.285866-2-diannaaav@gmail.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260910125645.285866-1-diannaaav@gmail.com> References: <20260910125645.285866-1-diannaaav@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Tianyi Chen getopts reports unknown options and missing arguments, but run_vmtests.sh ignores its error result and continues with test setup. An empty -t argument also falls back to the default selection, while unknown category names can silently select no tests and still reach setup code. Exit on getopts errors and validate category names against the existing list in usage() before any test setup. Reject empty and whitespace-only selections, and normalize category separators so validation and execution agree. Initialize the default selection before parsing options so only -t changes the selection. Fixes: 85463321e726 ("selftests/vm: enable running select groups of tests") Assisted-by: LLM Signed-off-by: Tianyi Chen --- tools/testing/selftests/mm/run_vmtests.sh | 26 +++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/tools/testing/selftests/mm/run_vmtests.sh b/tools/testing/selftests/mm/run_vmtests.sh index d09f9f6a384e..9e62ab4c6775 100755 --- a/tools/testing/selftests/mm/run_vmtests.sh +++ b/tools/testing/selftests/mm/run_vmtests.sh @@ -96,26 +96,44 @@ separated by spaces: example: ./run_vmtests.sh -t "hmm mmap ksm" EOF - exit 0 } RUN_ALL=false RUN_DESTRUCTIVE=false TAP_PREFIX="# " +VM_SELFTEST_ITEMS="default" + while getopts "aht:nd" OPT; do case ${OPT} in "a") RUN_ALL=true ;; - "h") usage ;; + "h") usage; exit 0 ;; "t") VM_SELFTEST_ITEMS=${OPTARG} ;; "n") TAP_PREFIX= ;; "d") RUN_DESTRUCTIVE=true ;; + "?") exit 1 ;; esac done shift $((OPTIND -1)) -# default behavior: run all tests -VM_SELFTEST_ITEMS=${VM_SELFTEST_ITEMS:-default} +# Normalize whitespace so validation and test_selected() use the same names. +read -r -a selected_categories <<< "${VM_SELFTEST_ITEMS//$'\n'/ }" +VM_SELFTEST_ITEMS="${selected_categories[*]}" +if [ -z "$VM_SELFTEST_ITEMS" ]; then + echo "No test categories specified" >&2 + exit 1 +fi + +if [ "$VM_SELFTEST_ITEMS" != "default" ]; then + # Keep the documented category list as the source of valid names. + valid_categories=$(usage | sed -n 's/^- //p') + for category in "${selected_categories[@]}"; do + if ! grep -Fxq -- "$category" <<< "$valid_categories"; then + echo "Unknown test category: $category" >&2 + exit 1 + fi + done +fi test_selected() { if [ "$VM_SELFTEST_ITEMS" == "default" ]; then -- 2.55.0