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