Received: by 2002:a05:7412:251c:b0:e2:908c:2ebd with SMTP id w28csp1222898rda; Mon, 23 Oct 2023 06:26:51 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHNNMwRL1qLhty8qQRJaCO09dlEb5FVLIXHGjsfzR1jDI3iavgGvoYYP+LW/6srRBMfK40I X-Received: by 2002:a05:6a00:1749:b0:692:b6e8:ce88 with SMTP id j9-20020a056a00174900b00692b6e8ce88mr7513302pfc.17.1698067610768; Mon, 23 Oct 2023 06:26:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698067610; cv=none; d=google.com; s=arc-20160816; b=epjGGv2KhOn2lu9Af/hgiTKarg55maIwfElsC0ZOva8hr9p24faTFJ16yLCdOe1eOE H5RV4Rx5ZqryZmYzStl3Nz9ugL4PsAKBRMHL7HHVoZRoh7WiW79ZkSPdC59uooAeSBwc 8UdDcftWvcUJnPwTJwZ0NH8NU2IkyfSy/9BWKCUlj5Q2MFAtTjof1YwW0x6aR7d52k46 vygd7Z0TC9TyYsJhmTUHeX+qqbO9W7yPwhDMECSZl7XRt0H+OroUYlt6W/e+LMxFwMPj ydHKUPdNmxicNXAKZvuhZYN3JQSdPnL0akReA25c9Iks6qTR+cAhEQco4P9yk8Cm/HoG eJQw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from :dkim-signature; bh=JDOm8BGf+NuDyiRKChjgzsv/d+PAfIhaL9msmDO2bbc=; fh=xOgJkz4bE+E4HUkOmCeGYyfcVGRNh88D8dGl4xMf3a0=; b=KLl/9OypGcnA4IUIbjxUcjBhIe7DQd87cSOUvFbK50edK2bLdfh6uvCAT6DzJ5iyC+ tqVLsWbDXfIOwZXQIXF+SFvFxEq/fC585YvG8XF7FeMuQifqSZKBz++tBWeXYFo5snr+ +IO1M5K76BbOalE32RKbmBdMiUjp4tStBdwgilwBiWUbz+7qosg5cfoUeejAvtSEXW9e iTxnGvkZu9kbO1RCIW82Mr3ZpzhBvyse7QHrxlctc0hbTo9mnnjVDiO59uIXxp4xRRds NfR/b06AguwQDnLeMkaTr0/RVCNQFHnqYguXk+Qvsj6L97tL1wVhQQPWbO/dY+QQyLe/ spXA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=EvhhcS01; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from groat.vger.email (groat.vger.email. [2620:137:e000::3:5]) by mx.google.com with ESMTPS id s13-20020a056a0008cd00b006bf53494ee0si4044633pfu.175.2023.10.23.06.26.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Oct 2023 06:26:50 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) client-ip=2620:137:e000::3:5; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=EvhhcS01; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id 3757980613B7; Mon, 23 Oct 2023 06:26:46 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232778AbjJWN0H (ORCPT + 99 others); Mon, 23 Oct 2023 09:26:07 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51580 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233412AbjJWNZW (ORCPT ); Mon, 23 Oct 2023 09:25:22 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3A54C2D48; Mon, 23 Oct 2023 06:23:45 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5EC4CC4339A; Mon, 23 Oct 2023 13:23:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1698067424; bh=Qe5xNWCPNFdyou1PNmnQ+Jo2U04gFbQ1SqDrhM8USLU=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=EvhhcS01zP+I/nJDBtv2/hU+IN3H+U80vvjB/kXRzcdP8y6qq/+8TZkr6oCUNbR+Y VevtcN+ihfVO+fHtriDTbX9Cqvv1AyKJdabmrj+H1uTbjEJ+uRsVVrD8NRpb1voIly UnirgPUUo8Or97dqZYUPFCUatQXllUANXlN1IPa1wHXNzPvZlhLm2w1UOQlc0CTMPI bhaPucy742dGd+m1gUnO/Q9rNKZgc+W9uKhHVRORwdYncYLj2y3ABmWt5yuqeAnYVd Jj0YUUnuKqrgI8MKAEP8Q33pxva1ioPeLWAMLdFq7/Mdz2hizr/uDKYDRVKAvOVROI 8S4yyhqy6aVSw== From: Mark Brown Date: Mon, 23 Oct 2023 14:20:42 +0100 Subject: [PATCH RFC RFT 3/5] selftests/clone3: Factor more of main loop into test_clone3() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20231023-clone3-shadow-stack-v1-3-d867d0b5d4d0@kernel.org> References: <20231023-clone3-shadow-stack-v1-0-d867d0b5d4d0@kernel.org> In-Reply-To: <20231023-clone3-shadow-stack-v1-0-d867d0b5d4d0@kernel.org> To: "Rick P. Edgecombe" , Deepak Gupta , Szabolcs Nagy , "H.J. Lu" , Florian Weimer , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H. Peter Anvin" , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Daniel Bristot de Oliveira , Valentin Schneider , Christian Brauner , Shuah Khan Cc: linux-kernel@vger.kernel.org, Catalin Marinas , Will Deacon , linux-kselftest@vger.kernel.org, linux-api@vger.kernel.org, Mark Brown X-Mailer: b4 0.13-dev-0438c X-Developer-Signature: v=1; a=openpgp-sha256; l=3743; i=broonie@kernel.org; h=from:subject:message-id; bh=Qe5xNWCPNFdyou1PNmnQ+Jo2U04gFbQ1SqDrhM8USLU=; b=owEBbQGS/pANAwAKASTWi3JdVIfQAcsmYgBlNnPFrNLdzYQAulVZaf402/CEZAeiUf2Mqwx6vlCg zbzu1/WJATMEAAEKAB0WIQSt5miqZ1cYtZ/in+ok1otyXVSH0AUCZTZzxQAKCRAk1otyXVSH0CpkB/ wI9vthQaH4b/7GbSX6xay6+qWrwwwjDWC0n05NMHY6+af8/WcriS64FlS/nL/cLW6KrqHuJ19n4j9n zRMGRtp2pldRNuywgaFS2ZODD7W22DOf9Kimlbpef69oZPKLOvSm1kf/GOvgcmeAR3D3Hvk5CjAHjX 24S3K8l2L2uMa1Ix66celhkPYAzqhnxaU3ojXJlXMem+4oAoeOtf231tW1r3oaboLztD5DDIPRkP99 vAclBMxqZggvL8OWelaXHwYnY8k4gN1bIOsH5IN8enKKbW7XAre8N+RzbkSm/yGDt9ETJXqhFulJ8P c67jcjKEpK1BoG03dlMF9V8jg3zxDS X-Developer-Key: i=broonie@kernel.org; a=openpgp; fpr=3F2568AAC26998F9E813A1C5C3F436CA30F5D8EB X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on groat.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (groat.vger.email [0.0.0.0]); Mon, 23 Oct 2023 06:26:46 -0700 (PDT) In order to make it easier to add more configuration for the tests and more support for runtime detection of when tests can be run pass the structure describing the tests into test_clone3() rather than picking the arguments out of it and have that function do all the per-test work. No functional change. Signed-off-by: Mark Brown --- tools/testing/selftests/clone3/clone3.c | 77 ++++++++++++++++----------------- 1 file changed, 37 insertions(+), 40 deletions(-) diff --git a/tools/testing/selftests/clone3/clone3.c b/tools/testing/selftests/clone3/clone3.c index 9429d361059e..afe383689a67 100644 --- a/tools/testing/selftests/clone3/clone3.c +++ b/tools/testing/selftests/clone3/clone3.c @@ -30,6 +30,19 @@ enum test_mode { CLONE3_ARGS_INVAL_EXIT_SIGNAL_NSIG, }; +typedef bool (*filter_function)(void); +typedef size_t (*size_function)(void); + +struct test { + const char *name; + uint64_t flags; + size_t size; + size_function size_function; + int expected; + enum test_mode test_mode; + filter_function filter; +}; + static int call_clone3(uint64_t flags, size_t size, enum test_mode test_mode) { struct __clone_args args = { @@ -104,30 +117,40 @@ static int call_clone3(uint64_t flags, size_t size, enum test_mode test_mode) return 0; } -static bool test_clone3(uint64_t flags, size_t size, int expected, - enum test_mode test_mode) +static void test_clone3(const struct test *test) { + size_t size; int ret; + if (test->filter && test->filter()) { + ksft_test_result_skip("%s\n", test->name); + return; + } + + if (test->size_function) + size = test->size_function(); + else + size = test->size; + + ksft_print_msg("Running test '%s'\n", test->name); + ksft_print_msg( "[%d] Trying clone3() with flags %#" PRIx64 " (size %zu)\n", - getpid(), flags, size); - ret = call_clone3(flags, size, test_mode); + getpid(), test->flags, size); + ret = call_clone3(test->flags, size, test->test_mode); ksft_print_msg("[%d] clone3() with flags says: %d expected %d\n", - getpid(), ret, expected); - if (ret != expected) { + getpid(), ret, test->expected); + if (ret != test->expected) { ksft_print_msg( "[%d] Result (%d) is different than expected (%d)\n", - getpid(), ret, expected); - return false; + getpid(), ret, test->expected); + ksft_test_result_fail("%s\n", test->name); + return; } - return true; + ksft_test_result_pass("%s\n", test->name); } -typedef bool (*filter_function)(void); -typedef size_t (*size_function)(void); - static bool not_root(void) { if (getuid() != 0) { @@ -143,16 +166,6 @@ static size_t page_size_plus_8(void) return getpagesize() + 8; } -struct test { - const char *name; - uint64_t flags; - size_t size; - size_function size_function; - int expected; - enum test_mode test_mode; - filter_function filter; -}; - static const struct test tests[] = { { .name = "simple clone3()", @@ -301,24 +314,8 @@ int main(int argc, char *argv[]) ksft_set_plan(ARRAY_SIZE(tests)); test_clone3_supported(); - for (i = 0; i < ARRAY_SIZE(tests); i++) { - if (tests[i].filter && tests[i].filter()) { - ksft_test_result_skip("%s\n", tests[i].name); - continue; - } - - if (tests[i].size_function) - size = tests[i].size_function(); - else - size = tests[i].size; - - ksft_print_msg("Running test '%s'\n", tests[i].name); - - ksft_test_result(test_clone3(tests[i].flags, size, - tests[i].expected, - tests[i].test_mode), - "%s\n", tests[i].name); - } + for (i = 0; i < ARRAY_SIZE(tests); i++) + test_clone3(&tests[i]); ksft_finished(); } -- 2.30.2