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=fallt...
Signed-off-by: Ruan Jinjie ruanjinjie@huawei.com
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:
[...]