xref: /OK3568_Linux_fs/kernel/tools/testing/selftests/bpf/test_kmod.sh (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#!/bin/sh
2*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0
3*4882a593Smuzhiyun
4*4882a593Smuzhiyun# Kselftest framework requirement - SKIP code is 4.
5*4882a593Smuzhiyunksft_skip=4
6*4882a593Smuzhiyun
7*4882a593Smuzhiyunmsg="skip all tests:"
8*4882a593Smuzhiyunif [ "$(id -u)" != "0" ]; then
9*4882a593Smuzhiyun	echo $msg please run this as root >&2
10*4882a593Smuzhiyun	exit $ksft_skip
11*4882a593Smuzhiyunfi
12*4882a593Smuzhiyun
13*4882a593Smuzhiyunif [ "$building_out_of_srctree" ]; then
14*4882a593Smuzhiyun	# We are in linux-build/kselftest/bpf
15*4882a593Smuzhiyun	OUTPUT=../../
16*4882a593Smuzhiyunelse
17*4882a593Smuzhiyun	# We are in linux/tools/testing/selftests/bpf
18*4882a593Smuzhiyun	OUTPUT=../../../../
19*4882a593Smuzhiyunfi
20*4882a593Smuzhiyun
21*4882a593Smuzhiyuntest_run()
22*4882a593Smuzhiyun{
23*4882a593Smuzhiyun	sysctl -w net.core.bpf_jit_enable=$1 2>&1 > /dev/null
24*4882a593Smuzhiyun	sysctl -w net.core.bpf_jit_harden=$2 2>&1 > /dev/null
25*4882a593Smuzhiyun
26*4882a593Smuzhiyun	echo "[ JIT enabled:$1 hardened:$2 ]"
27*4882a593Smuzhiyun	dmesg -C
28*4882a593Smuzhiyun	if [ -f ${OUTPUT}/lib/test_bpf.ko ]; then
29*4882a593Smuzhiyun		insmod ${OUTPUT}/lib/test_bpf.ko 2> /dev/null
30*4882a593Smuzhiyun		if [ $? -ne 0 ]; then
31*4882a593Smuzhiyun			rc=1
32*4882a593Smuzhiyun		fi
33*4882a593Smuzhiyun	else
34*4882a593Smuzhiyun		# Use modprobe dry run to check for missing test_bpf module
35*4882a593Smuzhiyun		if ! /sbin/modprobe -q -n test_bpf; then
36*4882a593Smuzhiyun			echo "test_bpf: [SKIP]"
37*4882a593Smuzhiyun		elif /sbin/modprobe -q test_bpf; then
38*4882a593Smuzhiyun			echo "test_bpf: ok"
39*4882a593Smuzhiyun		else
40*4882a593Smuzhiyun			echo "test_bpf: [FAIL]"
41*4882a593Smuzhiyun			rc=1
42*4882a593Smuzhiyun		fi
43*4882a593Smuzhiyun	fi
44*4882a593Smuzhiyun	rmmod  test_bpf 2> /dev/null
45*4882a593Smuzhiyun	dmesg | grep FAIL
46*4882a593Smuzhiyun}
47*4882a593Smuzhiyun
48*4882a593Smuzhiyuntest_save()
49*4882a593Smuzhiyun{
50*4882a593Smuzhiyun	JE=`sysctl -n net.core.bpf_jit_enable`
51*4882a593Smuzhiyun	JH=`sysctl -n net.core.bpf_jit_harden`
52*4882a593Smuzhiyun}
53*4882a593Smuzhiyun
54*4882a593Smuzhiyuntest_restore()
55*4882a593Smuzhiyun{
56*4882a593Smuzhiyun	sysctl -w net.core.bpf_jit_enable=$JE 2>&1 > /dev/null
57*4882a593Smuzhiyun	sysctl -w net.core.bpf_jit_harden=$JH 2>&1 > /dev/null
58*4882a593Smuzhiyun}
59*4882a593Smuzhiyun
60*4882a593Smuzhiyunrc=0
61*4882a593Smuzhiyuntest_save
62*4882a593Smuzhiyuntest_run 0 0
63*4882a593Smuzhiyuntest_run 1 0
64*4882a593Smuzhiyuntest_run 1 1
65*4882a593Smuzhiyuntest_run 1 2
66*4882a593Smuzhiyuntest_restore
67*4882a593Smuzhiyunexit $rc
68