On 2023/8/1 23:40, Yonghong Song wrote: > > > 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; Thank you very much! I'll fix it in v4. > | ^ > > 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: > [...]