On 8/1/23 2:48 AM, Ruan Jinjie wrote:
Replace the existing /* fall through */ comments with the
new pseudo-keyword macro fallthrough[1].
[1] https://www.kernel.org/doc/html/v5.7/process/deprecated.html?highlight=fallthrough#implicit-switch-case-fall-through
Signed-off-by: Ruan Jinjie <ruanjinjie@xxxxxxxxxx>
---
v3:
- Update the subject prefix and fix the 'fallthrough' undeclared build error.
---
v2:
- Update the subject and commit message.
---
tools/testing/selftests/bpf/prog_tests/kfunc_call.c | 4 ++--
tools/testing/selftests/bpf/progs/test_cls_redirect.c | 2 +-
tools/testing/selftests/bpf/progs/test_cls_redirect_dynptr.c | 2 +-
tools/testing/selftests/bpf/test_verifier.c | 3 ++-
4 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/tools/testing/selftests/bpf/prog_tests/kfunc_call.c b/tools/testing/selftests/bpf/prog_tests/kfunc_call.c
index a543742cd7bd..0fd08172965a 100644
--- a/tools/testing/selftests/bpf/prog_tests/kfunc_call.c
+++ b/tools/testing/selftests/bpf/prog_tests/kfunc_call.c
@@ -101,7 +101,7 @@ static void verify_success(struct kfunc_test_params *param)
case syscall_test:
topts.ctx_in = &args;
topts.ctx_size_in = sizeof(args);
- /* fallthrough */
+ fallthrough;
This won't work for clang built kernel/selftests:
In file included from progs/test_cls_redirect_subprogs.c:2:
progs/test_cls_redirect.c:303:4: error: use of undeclared identifier
'fallthrough'
303 | fallthrough;
| ^
CLNG-BPF [test_maps] netns_cookie_prog.bpf.o
CLNG-BPF [test_maps] test_skmsg_load_helpers.bpf.o
CLNG-BPF [test_maps] bpf_iter_setsockopt.bpf.o
CLNG-BPF [test_maps] timer.bpf.o
progs/test_cls_redirect.c:303:4: error: use of undeclared identifier
'fallthrough'
303 | fallthrough;
| ^
Try to build the kernel with:
make -j LLVM=1
make headers_install
and then build the selftests with
make -C tools/testing/selftests/bpf -j LLVM=1
[~/work/bpf-next/tools/include (master)]$ egrep -r fallthrough
egrep: warning: egrep is obsolescent; using grep -E
linux/compiler-gcc.h:#if __has_attribute(__fallthrough__)
linux/compiler-gcc.h:# define fallthrough
__attribute__((__fallthrough__))
linux/compiler-gcc.h:# define fallthrough do {} while
(0) /* fallthrough */
[~/work/bpf-next/tools/include (master)]$
Looks like 'fallthrough' is not defined for clang build tools/selftests.
case syscall_null_ctx_test:
break;
case tc_test:
@@ -167,7 +167,7 @@ static void verify_fail(struct kfunc_test_params *param)
case syscall_test:
topts.ctx_in = &args;
topts.ctx_size_in = sizeof(args);
- /* fallthrough */
+ fallthrough;
case syscall_null_ctx_test:
break;
case tc_test:
[...]