1d979e13aSRolf Eike Beer#!/bin/sh 2b2441318SGreg Kroah-Hartman# SPDX-License-Identifier: GPL-2.0 35aa5bd14SDaniel Borkmann 4*272d1f4cSYauheni Kaliuta# Usage: 5*272d1f4cSYauheni Kaliuta# ./test_kmod.sh [module_param]... 6*272d1f4cSYauheni Kaliuta# Ex.: ./test_kmod.sh test_range=1,3 7*272d1f4cSYauheni Kaliuta# All the parameters are passed to the kernel module. 8*272d1f4cSYauheni Kaliuta 981e167c2SJeffrin Jose T# Kselftest framework requirement - SKIP code is 4. 1081e167c2SJeffrin Jose Tksft_skip=4 1181e167c2SJeffrin Jose T 1281e167c2SJeffrin Jose Tmsg="skip all tests:" 1381e167c2SJeffrin Jose Tif [ "$(id -u)" != "0" ]; then 1481e167c2SJeffrin Jose T echo $msg please run this as root >&2 1581e167c2SJeffrin Jose T exit $ksft_skip 1681e167c2SJeffrin Jose Tfi 1781e167c2SJeffrin Jose T 182ea48598SIlya Leoshkevichif [ "$building_out_of_srctree" ]; then 192ea48598SIlya Leoshkevich # We are in linux-build/kselftest/bpf 202ea48598SIlya Leoshkevich OUTPUT=../../ 212ea48598SIlya Leoshkevichelse 222ea48598SIlya Leoshkevich # We are in linux/tools/testing/selftests/bpf 232ea48598SIlya Leoshkevich OUTPUT=../../../../ 242ea48598SIlya Leoshkevichfi 255aa5bd14SDaniel Borkmann 265aa5bd14SDaniel Borkmanntest_run() 275aa5bd14SDaniel Borkmann{ 285aa5bd14SDaniel Borkmann sysctl -w net.core.bpf_jit_enable=$1 2>&1 > /dev/null 295aa5bd14SDaniel Borkmann sysctl -w net.core.bpf_jit_harden=$2 2>&1 > /dev/null 305aa5bd14SDaniel Borkmann 315aa5bd14SDaniel Borkmann echo "[ JIT enabled:$1 hardened:$2 ]" 325aa5bd14SDaniel Borkmann dmesg -C 332ea48598SIlya Leoshkevich if [ -f ${OUTPUT}/lib/test_bpf.ko ]; then 34*272d1f4cSYauheni Kaliuta insmod ${OUTPUT}/lib/test_bpf.ko "$@" 2> /dev/null 355aa5bd14SDaniel Borkmann if [ $? -ne 0 ]; then 365aa5bd14SDaniel Borkmann rc=1 375aa5bd14SDaniel Borkmann fi 38035d808fSNaresh Kamboju else 39035d808fSNaresh Kamboju # Use modprobe dry run to check for missing test_bpf module 40*272d1f4cSYauheni Kaliuta if ! /sbin/modprobe -q -n test_bpf "$@"; then 41035d808fSNaresh Kamboju echo "test_bpf: [SKIP]" 42*272d1f4cSYauheni Kaliuta elif /sbin/modprobe -q test_bpf "$@"; then 43035d808fSNaresh Kamboju echo "test_bpf: ok" 44035d808fSNaresh Kamboju else 45035d808fSNaresh Kamboju echo "test_bpf: [FAIL]" 46035d808fSNaresh Kamboju rc=1 47035d808fSNaresh Kamboju fi 48035d808fSNaresh Kamboju fi 495aa5bd14SDaniel Borkmann rmmod test_bpf 2> /dev/null 505aa5bd14SDaniel Borkmann dmesg | grep FAIL 515aa5bd14SDaniel Borkmann} 525aa5bd14SDaniel Borkmann 535aa5bd14SDaniel Borkmanntest_save() 545aa5bd14SDaniel Borkmann{ 555aa5bd14SDaniel Borkmann JE=`sysctl -n net.core.bpf_jit_enable` 565aa5bd14SDaniel Borkmann JH=`sysctl -n net.core.bpf_jit_harden` 575aa5bd14SDaniel Borkmann} 585aa5bd14SDaniel Borkmann 595aa5bd14SDaniel Borkmanntest_restore() 605aa5bd14SDaniel Borkmann{ 615aa5bd14SDaniel Borkmann sysctl -w net.core.bpf_jit_enable=$JE 2>&1 > /dev/null 625aa5bd14SDaniel Borkmann sysctl -w net.core.bpf_jit_harden=$JH 2>&1 > /dev/null 635aa5bd14SDaniel Borkmann} 645aa5bd14SDaniel Borkmann 655aa5bd14SDaniel Borkmannrc=0 665aa5bd14SDaniel Borkmanntest_save 675aa5bd14SDaniel Borkmanntest_run 0 0 685aa5bd14SDaniel Borkmanntest_run 1 0 695aa5bd14SDaniel Borkmanntest_run 1 1 705aa5bd14SDaniel Borkmanntest_run 1 2 715aa5bd14SDaniel Borkmanntest_restore 725aa5bd14SDaniel Borkmannexit $rc 73