1d979e13aSRolf Eike Beer#!/bin/sh 2b2441318SGreg Kroah-Hartman# SPDX-License-Identifier: GPL-2.0 35aa5bd14SDaniel Borkmann 4272d1f4cSYauheni Kaliuta# Usage: 5272d1f4cSYauheni Kaliuta# ./test_kmod.sh [module_param]... 6272d1f4cSYauheni Kaliuta# Ex.: ./test_kmod.sh test_range=1,3 7272d1f4cSYauheni Kaliuta# All the parameters are passed to the kernel module. 8272d1f4cSYauheni 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 ]" 32*2702c789SYauheni Kaliuta shift 2 335aa5bd14SDaniel Borkmann dmesg -C 342ea48598SIlya Leoshkevich if [ -f ${OUTPUT}/lib/test_bpf.ko ]; then 35272d1f4cSYauheni Kaliuta insmod ${OUTPUT}/lib/test_bpf.ko "$@" 2> /dev/null 365aa5bd14SDaniel Borkmann if [ $? -ne 0 ]; then 375aa5bd14SDaniel Borkmann rc=1 385aa5bd14SDaniel Borkmann fi 39035d808fSNaresh Kamboju else 40035d808fSNaresh Kamboju # Use modprobe dry run to check for missing test_bpf module 41272d1f4cSYauheni Kaliuta if ! /sbin/modprobe -q -n test_bpf "$@"; then 42035d808fSNaresh Kamboju echo "test_bpf: [SKIP]" 43272d1f4cSYauheni Kaliuta elif /sbin/modprobe -q test_bpf "$@"; then 44035d808fSNaresh Kamboju echo "test_bpf: ok" 45035d808fSNaresh Kamboju else 46035d808fSNaresh Kamboju echo "test_bpf: [FAIL]" 47035d808fSNaresh Kamboju rc=1 48035d808fSNaresh Kamboju fi 49035d808fSNaresh Kamboju fi 505aa5bd14SDaniel Borkmann rmmod test_bpf 2> /dev/null 515aa5bd14SDaniel Borkmann dmesg | grep FAIL 525aa5bd14SDaniel Borkmann} 535aa5bd14SDaniel Borkmann 545aa5bd14SDaniel Borkmanntest_save() 555aa5bd14SDaniel Borkmann{ 565aa5bd14SDaniel Borkmann JE=`sysctl -n net.core.bpf_jit_enable` 575aa5bd14SDaniel Borkmann JH=`sysctl -n net.core.bpf_jit_harden` 585aa5bd14SDaniel Borkmann} 595aa5bd14SDaniel Borkmann 605aa5bd14SDaniel Borkmanntest_restore() 615aa5bd14SDaniel Borkmann{ 625aa5bd14SDaniel Borkmann sysctl -w net.core.bpf_jit_enable=$JE 2>&1 > /dev/null 635aa5bd14SDaniel Borkmann sysctl -w net.core.bpf_jit_harden=$JH 2>&1 > /dev/null 645aa5bd14SDaniel Borkmann} 655aa5bd14SDaniel Borkmann 665aa5bd14SDaniel Borkmannrc=0 675aa5bd14SDaniel Borkmanntest_save 68*2702c789SYauheni Kaliutatest_run 0 0 "$@" 69*2702c789SYauheni Kaliutatest_run 1 0 "$@" 70*2702c789SYauheni Kaliutatest_run 1 1 "$@" 71*2702c789SYauheni Kaliutatest_run 1 2 "$@" 725aa5bd14SDaniel Borkmanntest_restore 735aa5bd14SDaniel Borkmannexit $rc 74