samples: bpf: Fix tracex7 error raised on the missing argument
authorJuhee Kang <claudiajkang@gmail.com>
Tue, 27 Jul 2021 04:10:55 +0000 (04:10 +0000)
committerAndrii Nakryiko <andrii@kernel.org>
Tue, 27 Jul 2021 18:15:09 +0000 (11:15 -0700)
The current behavior of 'tracex7' doesn't consist with other bpf samples
tracex{1..6}. Other samples do not require any argument to run with, but
tracex7 should be run with btrfs device argument. (it should be executed
with test_override_return.sh)

Currently, tracex7 doesn't have any description about how to run this
program and raises an unexpected error. And this result might be
confusing since users might not have a hunch about how to run this
program.

    // Current behavior
    # ./tracex7
    sh: 1: Syntax error: word unexpected (expecting ")")
    // Fixed behavior
    # ./tracex7
    ERROR: Run with the btrfs device argument!

In order to fix this error, this commit adds logic to report a message
and exit when running this program with a missing argument.

Additionally in test_override_return.sh, there is a problem with
multiple directory(tmpmnt) creation. So in this commit adds a line with
removing the directory with every execution.

Signed-off-by: Juhee Kang <claudiajkang@gmail.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Acked-by: Yonghong Song <yhs@fb.com>
Link: https://lore.kernel.org/bpf/20210727041056.23455-1-claudiajkang@gmail.com
samples/bpf/test_override_return.sh
samples/bpf/tracex7_user.c

index e68b9ee..35db26f 100755 (executable)
@@ -1,5 +1,6 @@
 #!/bin/bash
 
+rm -r tmpmnt
 rm -f testfile.img
 dd if=/dev/zero of=testfile.img bs=1M seek=1000 count=1
 DEVICE=$(losetup --show -f testfile.img)
index fdcd658..8be7ce1 100644 (file)
@@ -14,6 +14,11 @@ int main(int argc, char **argv)
        int ret = 0;
        FILE *f;
 
+       if (!argv[1]) {
+               fprintf(stderr, "ERROR: Run with the btrfs device argument!\n");
+               return 0;
+       }
+
        snprintf(filename, sizeof(filename), "%s_kern.o", argv[0]);
        obj = bpf_object__open_file(filename, NULL);
        if (libbpf_get_error(obj)) {