1d979e13aSRolf Eike Beer#!/bin/sh
2b2441318SGreg Kroah-Hartman# SPDX-License-Identifier: GPL-2.0
35aa5bd14SDaniel Borkmann
481e167c2SJeffrin Jose T# Kselftest framework requirement - SKIP code is 4.
581e167c2SJeffrin Jose Tksft_skip=4
681e167c2SJeffrin Jose T
781e167c2SJeffrin Jose Tmsg="skip all tests:"
881e167c2SJeffrin Jose Tif [ "$(id -u)" != "0" ]; then
981e167c2SJeffrin Jose T	echo $msg please run this as root >&2
1081e167c2SJeffrin Jose T	exit $ksft_skip
1181e167c2SJeffrin Jose Tfi
1281e167c2SJeffrin Jose T
135aa5bd14SDaniel BorkmannSRC_TREE=../../../../
145aa5bd14SDaniel Borkmann
155aa5bd14SDaniel Borkmanntest_run()
165aa5bd14SDaniel Borkmann{
175aa5bd14SDaniel Borkmann	sysctl -w net.core.bpf_jit_enable=$1 2>&1 > /dev/null
185aa5bd14SDaniel Borkmann	sysctl -w net.core.bpf_jit_harden=$2 2>&1 > /dev/null
195aa5bd14SDaniel Borkmann
205aa5bd14SDaniel Borkmann	echo "[ JIT enabled:$1 hardened:$2 ]"
215aa5bd14SDaniel Borkmann	dmesg -C
22035d808fSNaresh Kamboju	if [ -f ${SRC_TREE}/lib/test_bpf.ko ]; then
23035d808fSNaresh Kamboju		insmod ${SRC_TREE}/lib/test_bpf.ko 2> /dev/null
245aa5bd14SDaniel Borkmann		if [ $? -ne 0 ]; then
255aa5bd14SDaniel Borkmann			rc=1
265aa5bd14SDaniel Borkmann		fi
27035d808fSNaresh Kamboju	else
28035d808fSNaresh Kamboju		# Use modprobe dry run to check for missing test_bpf module
29035d808fSNaresh Kamboju		if ! /sbin/modprobe -q -n test_bpf; then
30035d808fSNaresh Kamboju			echo "test_bpf: [SKIP]"
31035d808fSNaresh Kamboju		elif /sbin/modprobe -q test_bpf; then
32035d808fSNaresh Kamboju			echo "test_bpf: ok"
33035d808fSNaresh Kamboju		else
34035d808fSNaresh Kamboju			echo "test_bpf: [FAIL]"
35035d808fSNaresh Kamboju			rc=1
36035d808fSNaresh Kamboju		fi
37035d808fSNaresh Kamboju	fi
385aa5bd14SDaniel Borkmann	rmmod  test_bpf 2> /dev/null
395aa5bd14SDaniel Borkmann	dmesg | grep FAIL
405aa5bd14SDaniel Borkmann}
415aa5bd14SDaniel Borkmann
425aa5bd14SDaniel Borkmanntest_save()
435aa5bd14SDaniel Borkmann{
445aa5bd14SDaniel Borkmann	JE=`sysctl -n net.core.bpf_jit_enable`
455aa5bd14SDaniel Borkmann	JH=`sysctl -n net.core.bpf_jit_harden`
465aa5bd14SDaniel Borkmann}
475aa5bd14SDaniel Borkmann
485aa5bd14SDaniel Borkmanntest_restore()
495aa5bd14SDaniel Borkmann{
505aa5bd14SDaniel Borkmann	sysctl -w net.core.bpf_jit_enable=$JE 2>&1 > /dev/null
515aa5bd14SDaniel Borkmann	sysctl -w net.core.bpf_jit_harden=$JH 2>&1 > /dev/null
525aa5bd14SDaniel Borkmann}
535aa5bd14SDaniel Borkmann
545aa5bd14SDaniel Borkmannrc=0
555aa5bd14SDaniel Borkmanntest_save
565aa5bd14SDaniel Borkmanntest_run 0 0
575aa5bd14SDaniel Borkmanntest_run 1 0
585aa5bd14SDaniel Borkmanntest_run 1 1
595aa5bd14SDaniel Borkmanntest_run 1 2
605aa5bd14SDaniel Borkmanntest_restore
615aa5bd14SDaniel Borkmannexit $rc
62