From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-yw0-f196.google.com ([209.85.161.196]:42629 "EHLO mail-yw0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934818AbeFMAXC (ORCPT ); Tue, 12 Jun 2018 20:23:02 -0400 Received: by mail-yw0-f196.google.com with SMTP id q7-v6so280520ywd.9 for ; Tue, 12 Jun 2018 17:23:02 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: <20180613001924.30082-1-shuah@kernel.org> References: <20180613001924.30082-1-shuah@kernel.org> From: Kees Cook Date: Tue, 12 Jun 2018 17:23:01 -0700 Message-ID: Subject: Re: [PATCH] selftests: sysctl: return Kselftest Skip code for skipped tests To: "Shuah Khan (Samsung OSG)" Cc: "Luis R. Rodriguez" , LKML , "linux-fsdevel@vger.kernel.org" , "open list:KERNEL SELFTEST FRAMEWORK" Content-Type: text/plain; charset="UTF-8" Sender: linux-fsdevel-owner@vger.kernel.org List-ID: On Tue, Jun 12, 2018 at 5:19 PM, Shuah Khan (Samsung OSG) wrote: > When sysctl test is skipped because of unmet dependencies and/or > unsupported configuration, it exits with error which is treated as > a fail by the Kselftest framework. This leads to false negative result > even when the test could not be run. > > Change it to return kselftest skip code when a test gets skipped to > clearly report that the test could not be run. > > Changed return code to kselftest skip code in skip error legs that check > requirements and module probe test error leg. > > Kselftest framework SKIP code is 4 and the framework prints appropriate > messages to indicate that the test is skipped. > > Signed-off-by: Shuah Khan (Samsung OSG) Reviewed-by: Kees Cook > --- > tools/testing/selftests/sysctl/sysctl.sh | 20 +++++++++++++------- > 1 file changed, 13 insertions(+), 7 deletions(-) > > diff --git a/tools/testing/selftests/sysctl/sysctl.sh b/tools/testing/selftests/sysctl/sysctl.sh > index ec232c3cfcaa..584eb8ea780a 100755 > --- a/tools/testing/selftests/sysctl/sysctl.sh > +++ b/tools/testing/selftests/sysctl/sysctl.sh > @@ -14,6 +14,9 @@ > > # This performs a series tests against the proc sysctl interface. > > +# Kselftest framework requirement - SKIP code is 4. > +ksft_skip=4 > + > TEST_NAME="sysctl" > TEST_DRIVER="test_${TEST_NAME}" > TEST_DIR=$(dirname $0) > @@ -41,7 +44,7 @@ test_modprobe() > echo "$0: $DIR not present" >&2 > echo "You must have the following enabled in your kernel:" >&2 > cat $TEST_DIR/config >&2 > - exit 1 > + exit $ksft_skip > fi > } > > @@ -98,28 +101,30 @@ test_reqs() > uid=$(id -u) > if [ $uid -ne 0 ]; then > echo $msg must be run as root >&2 > - exit 0 > + exit $ksft_skip > fi > > if ! which perl 2> /dev/null > /dev/null; then > echo "$0: You need perl installed" > - exit 1 > + exit $ksft_skip > fi > if ! which getconf 2> /dev/null > /dev/null; then > echo "$0: You need getconf installed" > - exit 1 > + exit $ksft_skip > fi > if ! which diff 2> /dev/null > /dev/null; then > echo "$0: You need diff installed" > - exit 1 > + exit $ksft_skip > fi > } > > function load_req_mod() > { > - trap "test_modprobe" EXIT > - > if [ ! -d $DIR ]; then > + if ! modprobe -q -n $TEST_DRIVER; then > + echo "$0: module $TEST_DRIVER not found [SKIP]" > + exit $ksft_skip > + fi > modprobe $TEST_DRIVER > if [ $? -ne 0 ]; then > exit > @@ -765,6 +770,7 @@ function parse_args() > test_reqs > allow_user_defaults > check_production_sysctl_writes_strict > +test_modprobe > load_req_mod > > trap "test_finish" EXIT > -- > 2.17.0 > -- Kees Cook Pixel Security