Re: [PATCH bpf-next v3] selftests/bpf: replace fall through comment by fallthrough pseudo-keyword

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





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:
[...]




[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux