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