74 lines
1.5 KiB
Bash
Executable File
74 lines
1.5 KiB
Bash
Executable File
#!/bin/sh
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
|
|
# Usage:
|
|
# ./test_kmod.sh [module_param]...
|
|
# Ex.: ./test_kmod.sh test_range=1,3
|
|
# All the parameters are passed to the kernel module.
|
|
|
|
# Kselftest framework requirement - SKIP code is 4.
|
|
ksft_skip=4
|
|
|
|
msg="skip all tests:"
|
|
if [ "$(id -u)" != "0" ]; then
|
|
echo $msg please run this as root >&2
|
|
exit $ksft_skip
|
|
fi
|
|
|
|
if [ "$building_out_of_srctree" ]; then
|
|
# We are in linux-build/kselftest/bpf
|
|
OUTPUT=../../
|
|
else
|
|
# We are in linux/tools/testing/selftests/bpf
|
|
OUTPUT=../../../../
|
|
fi
|
|
|
|
test_run()
|
|
{
|
|
sysctl -w net.core.bpf_jit_enable=$1 2>&1 > /dev/null
|
|
sysctl -w net.core.bpf_jit_harden=$2 2>&1 > /dev/null
|
|
|
|
echo "[ JIT enabled:$1 hardened:$2 ]"
|
|
shift 2
|
|
dmesg -C
|
|
if [ -f ${OUTPUT}/lib/test_bpf.ko ]; then
|
|
insmod ${OUTPUT}/lib/test_bpf.ko "$@" 2> /dev/null
|
|
if [ $? -ne 0 ]; then
|
|
rc=1
|
|
fi
|
|
else
|
|
# Use modprobe dry run to check for missing test_bpf module
|
|
if ! /sbin/modprobe -q -n test_bpf "$@"; then
|
|
echo "test_bpf: [SKIP]"
|
|
elif /sbin/modprobe -q test_bpf "$@"; then
|
|
echo "test_bpf: ok"
|
|
else
|
|
echo "test_bpf: [FAIL]"
|
|
rc=1
|
|
fi
|
|
fi
|
|
rmmod test_bpf 2> /dev/null
|
|
dmesg | grep FAIL
|
|
}
|
|
|
|
test_save()
|
|
{
|
|
JE=`sysctl -n net.core.bpf_jit_enable`
|
|
JH=`sysctl -n net.core.bpf_jit_harden`
|
|
}
|
|
|
|
test_restore()
|
|
{
|
|
sysctl -w net.core.bpf_jit_enable=$JE 2>&1 > /dev/null
|
|
sysctl -w net.core.bpf_jit_harden=$JH 2>&1 > /dev/null
|
|
}
|
|
|
|
rc=0
|
|
test_save
|
|
test_run 0 0 "$@"
|
|
test_run 1 0 "$@"
|
|
test_run 1 1 "$@"
|
|
test_run 1 2 "$@"
|
|
test_restore
|
|
exit $rc
|