selftests: bpf: test_kmod.sh: check the module path before insmod

Message ID 1517951243-10003-1-git-send-email-naresh.kamboju@linaro.org
State New
Headers show
Series
  • selftests: bpf: test_kmod.sh: check the module path before insmod
Related show

Commit Message

Naresh Kamboju Feb. 6, 2018, 9:07 p.m.
test_kmod.sh reported false failure when module not present.
Check test_bpf.ko is present in the path before loading it.

Stop using "insmod $SRC_TREE/lib/test_bpf.ko" instead use
"modprobe test_bpf"

Signed-off-by: Naresh Kamboju <naresh.kamboju@linaro.org>

---
 tools/testing/selftests/bpf/test_kmod.sh | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

-- 
2.7.4

Comments

Daniel Borkmann Feb. 7, 2018, 1:32 p.m. | #1
Hi Naresh,

On 02/06/2018 10:07 PM, Naresh Kamboju wrote:
> test_kmod.sh reported false failure when module not present.

> Check test_bpf.ko is present in the path before loading it.

> 

> Stop using "insmod $SRC_TREE/lib/test_bpf.ko" instead use

> "modprobe test_bpf"

> 

> Signed-off-by: Naresh Kamboju <naresh.kamboju@linaro.org>


Thanks for looking into this! Could we have a way to be able to
support both? Say, when test_bpf.ko from SRC_TREE is not present,
we try with modprobe -q fallback? I would still like to support
the case where you can make local changes and add new tests to
test_bpf.c, recompile and then just rerun the test_kmod.sh w/o
having to install it first.

Thanks,
Daniel

>  tools/testing/selftests/bpf/test_kmod.sh | 11 +++++++----

>  1 file changed, 7 insertions(+), 4 deletions(-)

> 

> diff --git a/tools/testing/selftests/bpf/test_kmod.sh b/tools/testing/selftests/bpf/test_kmod.sh

> index ed4774d..54177b1 100755

> --- a/tools/testing/selftests/bpf/test_kmod.sh

> +++ b/tools/testing/selftests/bpf/test_kmod.sh

> @@ -1,8 +1,6 @@

>  #!/bin/sh

>  # SPDX-License-Identifier: GPL-2.0

>  

> -SRC_TREE=../../../../

> -

>  test_run()

>  {

>  	sysctl -w net.core.bpf_jit_enable=$1 2>&1 > /dev/null

> @@ -10,8 +8,13 @@ test_run()

>  

>  	echo "[ JIT enabled:$1 hardened:$2 ]"

>  	dmesg -C

> -	insmod $SRC_TREE/lib/test_bpf.ko 2> /dev/null

> -	if [ $? -ne 0 ]; then

> +	# Use modprobe dry run to check for missing test_bpf module

> +	if ! /sbin/modprobe -q -n test_bpf; then

> +		echo "test_bpf: [SKIP]"

> +	elif /sbin/modprobe -q test_bpf; then

> +		echo "test_bpf: ok"

> +	else

> +		echo "test_bpf: [FAIL]"

>  		rc=1

>  	fi

>  	rmmod  test_bpf 2> /dev/null

>
Naresh Kamboju Feb. 7, 2018, 6:17 p.m. | #2
Hi Daniel,

On 7 February 2018 at 19:02, Daniel Borkmann <daniel@iogearbox.net> wrote:
> Hi Naresh,

>

> On 02/06/2018 10:07 PM, Naresh Kamboju wrote:

>> test_kmod.sh reported false failure when module not present.

>> Check test_bpf.ko is present in the path before loading it.

>>

>> Stop using "insmod $SRC_TREE/lib/test_bpf.ko" instead use

>> "modprobe test_bpf"

>>

>> Signed-off-by: Naresh Kamboju <naresh.kamboju@linaro.org>

>

> Thanks for looking into this! Could we have a way to be able to

> support both? Say, when test_bpf.ko from SRC_TREE is not present,

> we try with modprobe -q fallback? I would still like to support

> the case where you can make local changes and add new tests to

> test_bpf.c, recompile and then just rerun the test_kmod.sh w/o

> having to install it first.


Thanks for the review comments.
I have sent patch v2 with your comments addressed.

- Naresh

>

> Thanks,

> Daniel

>

>>  tools/testing/selftests/bpf/test_kmod.sh | 11 +++++++----

>>  1 file changed, 7 insertions(+), 4 deletions(-)

>>

>> diff --git a/tools/testing/selftests/bpf/test_kmod.sh b/tools/testing/selftests/bpf/test_kmod.sh

>> index ed4774d..54177b1 100755

>> --- a/tools/testing/selftests/bpf/test_kmod.sh

>> +++ b/tools/testing/selftests/bpf/test_kmod.sh

>> @@ -1,8 +1,6 @@

>>  #!/bin/sh

>>  # SPDX-License-Identifier: GPL-2.0

>>

>> -SRC_TREE=../../../../

>> -

>>  test_run()

>>  {

>>       sysctl -w net.core.bpf_jit_enable=$1 2>&1 > /dev/null

>> @@ -10,8 +8,13 @@ test_run()

>>

>>       echo "[ JIT enabled:$1 hardened:$2 ]"

>>       dmesg -C

>> -     insmod $SRC_TREE/lib/test_bpf.ko 2> /dev/null

>> -     if [ $? -ne 0 ]; then

>> +     # Use modprobe dry run to check for missing test_bpf module

>> +     if ! /sbin/modprobe -q -n test_bpf; then

>> +             echo "test_bpf: [SKIP]"

>> +     elif /sbin/modprobe -q test_bpf; then

>> +             echo "test_bpf: ok"

>> +     else

>> +             echo "test_bpf: [FAIL]"

>>               rc=1

>>       fi

>>       rmmod  test_bpf 2> /dev/null

>>

>

Patch

diff --git a/tools/testing/selftests/bpf/test_kmod.sh b/tools/testing/selftests/bpf/test_kmod.sh
index ed4774d..54177b1 100755
--- a/tools/testing/selftests/bpf/test_kmod.sh
+++ b/tools/testing/selftests/bpf/test_kmod.sh
@@ -1,8 +1,6 @@ 
 #!/bin/sh
 # SPDX-License-Identifier: GPL-2.0
 
-SRC_TREE=../../../../
-
 test_run()
 {
 	sysctl -w net.core.bpf_jit_enable=$1 2>&1 > /dev/null
@@ -10,8 +8,13 @@  test_run()
 
 	echo "[ JIT enabled:$1 hardened:$2 ]"
 	dmesg -C
-	insmod $SRC_TREE/lib/test_bpf.ko 2> /dev/null
-	if [ $? -ne 0 ]; then
+	# Use modprobe dry run to check for missing test_bpf module
+	if ! /sbin/modprobe -q -n test_bpf; then
+		echo "test_bpf: [SKIP]"
+	elif /sbin/modprobe -q test_bpf; then
+		echo "test_bpf: ok"
+	else
+		echo "test_bpf: [FAIL]"
 		rc=1
 	fi
 	rmmod  test_bpf 2> /dev/null