OSDN Git Service

selftests/bpf: Reset err when symbol name already exist in kprobe_multi_test
authorManu Bretelle <chantr4@gmail.com>
Sat, 8 Apr 2023 02:29:19 +0000 (19:29 -0700)
committerAndrii Nakryiko <andrii@kernel.org>
Mon, 10 Apr 2023 16:40:37 +0000 (09:40 -0700)
When trying to add a name to the hashmap, an error code of EEXIST is
returned and we continue as names are possibly duplicated in the sys
file.

If the last name in the file is a duplicate, we will continue to the
next iteration of the while loop, and exit the loop with a value of err
set to EEXIST and enter the error label with err set, which causes the
test to fail when it should not.

This change reset err to 0 before continue-ing into the next iteration,
this way, if there is no more data to read from the file we iterate
through, err will be set to 0.

Behaviour prior to this change:
```
test_kprobe_multi_bench_attach:FAIL:get_syms unexpected error: -17
(errno 2)

All error logs:
test_kprobe_multi_bench_attach:FAIL:get_syms unexpected error: -17
(errno 2)
Summary: 0/1 PASSED, 0 SKIPPED, 1 FAILED
```

After this change:
```
Summary: 1/2 PASSED, 0 SKIPPED, 0 FAILED
```

Signed-off-by: Manu Bretelle <chantr4@gmail.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20230408022919.54601-1-chantr4@gmail.com
tools/testing/selftests/bpf/prog_tests/kprobe_multi_test.c

index 22be0a9..2173c4b 100644 (file)
@@ -381,8 +381,10 @@ static int get_syms(char ***symsp, size_t *cntp, bool kernel)
                        continue;
 
                err = hashmap__add(map, name, 0);
-               if (err == -EEXIST)
+               if (err == -EEXIST) {
+                       err = 0;
                        continue;
+               }
                if (err)
                        goto error;