lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Mon, 27 Apr 2020 18:39:13 +0000
From:   Luis Chamberlain <mcgrof@...nel.org>
To:     Vlastimil Babka <vbabka@...e.cz>
Cc:     Andrew Morton <akpm@...ux-foundation.org>,
        Kees Cook <keescook@...omium.org>,
        Iurii Zaikin <yzaikin@...gle.com>,
        linux-kernel@...r.kernel.org, linux-api@...r.kernel.org,
        linux-mm@...ck.org, Ivan Teterevkov <ivan.teterevkov@...anix.com>,
        Michal Hocko <mhocko@...nel.org>,
        David Rientjes <rientjes@...gle.com>,
        Matthew Wilcox <willy@...radead.org>,
        "Eric W . Biederman" <ebiederm@...ssion.com>,
        "Guilherme G . Piccoli" <gpiccoli@...onical.com>,
        Alexey Dobriyan <adobriyan@...il.com>,
        Thomas Gleixner <tglx@...utronix.de>,
        Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
        Christian Brauner <christian.brauner@...ntu.com>,
        Masami Hiramatsu <mhiramat@...nel.org>
Subject: Re: [PATCH v3 5/5] lib/test_sysctl: support testing of sysctl. boot
 parameter

On Mon, Apr 27, 2020 at 08:04:33PM +0200, Vlastimil Babka wrote:
> Testing is done by a new parameter debug.test_sysctl.boot_int which defaults to
> 0 and it's expected that the tester passes a boot parameter that sets it to 1.
> The test checks if it's set to 1. To distinguish true failure from parameter
> not being set, the test checks /proc/cmdline for the expected parameter, and
> whether test_sysctl is built-in and not a module.
> 
> Signed-off-by: Vlastimil Babka <vbabka@...e.cz>
> ---
>  lib/test_sysctl.c                        | 13 +++++++++
>  tools/testing/selftests/sysctl/sysctl.sh | 36 ++++++++++++++++++++++++
>  2 files changed, 49 insertions(+)
> 
> diff --git a/lib/test_sysctl.c b/lib/test_sysctl.c
> index 566dad3f4196..84eaae22d3a6 100644
> --- a/lib/test_sysctl.c
> +++ b/lib/test_sysctl.c
> @@ -44,6 +44,8 @@ struct test_sysctl_data {
>  	int int_0002;
>  	int int_0003[4];
>  
> +	int boot_int;
> +
>  	unsigned int uint_0001;
>  
>  	char string_0001[65];
> @@ -61,6 +63,8 @@ static struct test_sysctl_data test_data = {
>  	.int_0003[2] = 2,
>  	.int_0003[3] = 3,
>  
> +	.boot_int = 0,
> +
>  	.uint_0001 = 314,
>  
>  	.string_0001 = "(none)",
> @@ -91,6 +95,15 @@ static struct ctl_table test_table[] = {
>  		.mode		= 0644,
>  		.proc_handler	= proc_dointvec,
>  	},
> +	{
> +		.procname	= "boot_int",
> +		.data		= &test_data.boot_int,
> +		.maxlen		= sizeof(test_data.boot_int),
> +		.mode		= 0644,
> +		.proc_handler	= proc_dointvec,
> +		.extra1		= SYSCTL_ZERO,
> +		.extra2         = SYSCTL_ONE,
> +	},
>  	{
>  		.procname	= "uint_0001",
>  		.data		= &test_data.uint_0001,
> diff --git a/tools/testing/selftests/sysctl/sysctl.sh b/tools/testing/selftests/sysctl/sysctl.sh
> index ce1eeea6f769..ef6417b8067b 100755
> --- a/tools/testing/selftests/sysctl/sysctl.sh
> +++ b/tools/testing/selftests/sysctl/sysctl.sh
> @@ -39,6 +39,7 @@ ALL_TESTS="$ALL_TESTS 0003:1:1:int_0002"
>  ALL_TESTS="$ALL_TESTS 0004:1:1:uint_0001"
>  ALL_TESTS="$ALL_TESTS 0005:3:1:int_0003"
>  ALL_TESTS="$ALL_TESTS 0006:50:1:bitmap_0001"
> +ALL_TESTS="$ALL_TESTS 0007:1:1:boot_int"
>  
>  test_modprobe()
>  {
> @@ -752,6 +753,40 @@ sysctl_test_0006()
>  	run_bitmaptest
>  }
>  
> +sysctl_test_0007()
> +{
> +	TARGET="${SYSCTL}/boot_int"
> +	if [ -d $DIR ]; then
> +		echo "Boot param test only possible sysctl_test is built-in, not module:"
> +		cat $TEST_DIR/config >&2
> +		return 0
> +	fi

Nice, also we could just require

diff --git a/tools/testing/selftests/sysctl/config b/tools/testing/selftests/sysctl/config
index 6ca14800d755..34461cc99a2b 100644
--- a/tools/testing/selftests/sysctl/config
+++ b/tools/testing/selftests/sysctl/config
@@ -1 +1,3 @@
 CONFIG_TEST_SYSCTL=y
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y

tools/testing/selftests/firmware/fw_lib.sh then has a kconfig_has()
which can verify the exact config.

> +
> +	echo -n "Testing if $TARGET is set to 1 ..."
> +	ORIG=$(cat "${TARGET}")

This would fail if someone uses this script to test an older kernel, and
the scripts in selftests are supposed to work with older kernels. One
way to address this would be to just see if the file exists first and
ignore the test if the $SYSCTL directory exists but the file $TARGET
does not.

For now we can just do this:

if [ ! -d $TARGET ]; then
	echo "Skipping test for $TARGET as it is not present ..."
	return 0
fi

  Luis

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ