selftests/sysctl: add sysctl macro test
Cc: Luis Chamberlain <mcgrof@kernel.org> Cc: Kees Cook <keescook@chromium.org> Cc: Iurii Zaikin <yzaikin@google.com> Cc: "David S. Miller" <davem@davemloft.net> Cc: Jakub Kicinski <kuba@kernel.org> Cc: Paolo Abeni <pabeni@redhat.com> Cc: Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org> Cc: David Ahern <dsahern@kernel.org> Cc: Simon Horman <horms@verge.net.au> Cc: Julian Anastasov <ja@ssi.bg> Cc: Pablo Neira Ayuso <pablo@netfilter.org> Cc: Jozsef Kadlecsik <kadlec@netfilter.org> Cc: Florian Westphal <fw@strlen.de> Cc: Shuah Khan <shuah@kernel.org> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Alexei Starovoitov <ast@kernel.org> Cc: Eric Dumazet <edumazet@google.com> Cc: Lorenz Bauer <lmb@cloudflare.com> Cc: Akhmat Karakotov <hmukos@yandex-team.ru> Signed-off-by: Tonghao Zhang <xiangxia.m.yue@gmail.com> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
parent
4c7f24f857
commit
57b19468b3
|
@ -38,6 +38,7 @@
|
||||||
|
|
||||||
static int i_zero;
|
static int i_zero;
|
||||||
static int i_one_hundred = 100;
|
static int i_one_hundred = 100;
|
||||||
|
static int match_int_ok = 1;
|
||||||
|
|
||||||
struct test_sysctl_data {
|
struct test_sysctl_data {
|
||||||
int int_0001;
|
int int_0001;
|
||||||
|
@ -95,6 +96,13 @@ static struct ctl_table test_table[] = {
|
||||||
.mode = 0644,
|
.mode = 0644,
|
||||||
.proc_handler = proc_dointvec,
|
.proc_handler = proc_dointvec,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.procname = "match_int",
|
||||||
|
.data = &match_int_ok,
|
||||||
|
.maxlen = sizeof(match_int_ok),
|
||||||
|
.mode = 0444,
|
||||||
|
.proc_handler = proc_dointvec,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
.procname = "boot_int",
|
.procname = "boot_int",
|
||||||
.data = &test_data.boot_int,
|
.data = &test_data.boot_int,
|
||||||
|
@ -132,6 +140,30 @@ static struct ctl_table_header *test_sysctl_header;
|
||||||
|
|
||||||
static int __init test_sysctl_init(void)
|
static int __init test_sysctl_init(void)
|
||||||
{
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
struct {
|
||||||
|
int defined;
|
||||||
|
int wanted;
|
||||||
|
} match_int[] = {
|
||||||
|
{.defined = *(int *)SYSCTL_ZERO, .wanted = 0},
|
||||||
|
{.defined = *(int *)SYSCTL_ONE, .wanted = 1},
|
||||||
|
{.defined = *(int *)SYSCTL_TWO, .wanted = 2},
|
||||||
|
{.defined = *(int *)SYSCTL_THREE, .wanted = 3},
|
||||||
|
{.defined = *(int *)SYSCTL_FOUR, .wanted = 4},
|
||||||
|
{.defined = *(int *)SYSCTL_ONE_HUNDRED, .wanted = 100},
|
||||||
|
{.defined = *(int *)SYSCTL_TWO_HUNDRED, .wanted = 200},
|
||||||
|
{.defined = *(int *)SYSCTL_ONE_THOUSAND, .wanted = 1000},
|
||||||
|
{.defined = *(int *)SYSCTL_THREE_THOUSAND, .wanted = 3000},
|
||||||
|
{.defined = *(int *)SYSCTL_INT_MAX, .wanted = INT_MAX},
|
||||||
|
{.defined = *(int *)SYSCTL_MAXOLDUID, .wanted = 65535},
|
||||||
|
{.defined = *(int *)SYSCTL_NEG_ONE, .wanted = -1},
|
||||||
|
};
|
||||||
|
|
||||||
|
for (i = 0; i < ARRAY_SIZE(match_int); i++)
|
||||||
|
if (match_int[i].defined != match_int[i].wanted)
|
||||||
|
match_int_ok = 0;
|
||||||
|
|
||||||
test_data.bitmap_0001 = kzalloc(SYSCTL_TEST_BITMAP_SIZE/8, GFP_KERNEL);
|
test_data.bitmap_0001 = kzalloc(SYSCTL_TEST_BITMAP_SIZE/8, GFP_KERNEL);
|
||||||
if (!test_data.bitmap_0001)
|
if (!test_data.bitmap_0001)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
|
@ -40,6 +40,7 @@ ALL_TESTS="$ALL_TESTS 0004:1:1:uint_0001"
|
||||||
ALL_TESTS="$ALL_TESTS 0005:3:1:int_0003"
|
ALL_TESTS="$ALL_TESTS 0005:3:1:int_0003"
|
||||||
ALL_TESTS="$ALL_TESTS 0006:50:1:bitmap_0001"
|
ALL_TESTS="$ALL_TESTS 0006:50:1:bitmap_0001"
|
||||||
ALL_TESTS="$ALL_TESTS 0007:1:1:boot_int"
|
ALL_TESTS="$ALL_TESTS 0007:1:1:boot_int"
|
||||||
|
ALL_TESTS="$ALL_TESTS 0008:1:1:match_int"
|
||||||
|
|
||||||
function allow_user_defaults()
|
function allow_user_defaults()
|
||||||
{
|
{
|
||||||
|
@ -785,6 +786,27 @@ sysctl_test_0007()
|
||||||
return $ksft_skip
|
return $ksft_skip
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sysctl_test_0008()
|
||||||
|
{
|
||||||
|
TARGET="${SYSCTL}/match_int"
|
||||||
|
if [ ! -f $TARGET ]; then
|
||||||
|
echo "Skipping test for $TARGET as it is not present ..."
|
||||||
|
return $ksft_skip
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -n "Testing if $TARGET is matched in kernel"
|
||||||
|
ORIG_VALUE=$(cat "${TARGET}")
|
||||||
|
|
||||||
|
if [ $ORIG_VALUE -ne 1 ]; then
|
||||||
|
echo "TEST FAILED"
|
||||||
|
rc=1
|
||||||
|
test_rc
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "ok"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
list_tests()
|
list_tests()
|
||||||
{
|
{
|
||||||
echo "Test ID list:"
|
echo "Test ID list:"
|
||||||
|
@ -800,6 +822,7 @@ list_tests()
|
||||||
echo "0005 x $(get_test_count 0005) - tests proc_douintvec() array"
|
echo "0005 x $(get_test_count 0005) - tests proc_douintvec() array"
|
||||||
echo "0006 x $(get_test_count 0006) - tests proc_do_large_bitmap()"
|
echo "0006 x $(get_test_count 0006) - tests proc_do_large_bitmap()"
|
||||||
echo "0007 x $(get_test_count 0007) - tests setting sysctl from kernel boot param"
|
echo "0007 x $(get_test_count 0007) - tests setting sysctl from kernel boot param"
|
||||||
|
echo "0008 x $(get_test_count 0008) - tests sysctl macro values match"
|
||||||
}
|
}
|
||||||
|
|
||||||
usage()
|
usage()
|
||||||
|
|
Loading…
Reference in New Issue