Re: [PATCH bpf-next] bpf: avoid casts from pointers to enums in bpf_tracing.h

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

 



>> Also please check CI failures ([0]).
>>
>>   [0] https://github.com/kernel-patches/bpf/actions/runs/8846180836/job/24291582343
>
> How weird.  This means something is going on in my local testing
> environment.

Ok, I think I know what is going on: the CI failures had nothing to do
with the patch changes per-se, but with the fact the patch changes
bpf_tracing.h and a little problem in the build system.

If I change tools/lib/bpf/bpf_tracing.h in bpf-next master, then
execute:

 $ cd bpf-next/
 $ git clean -xf
 $ cd tools/testing/selftests/bpf/
 $ ./vmtest.sh -- ./test_progs

in tools/testing/sefltests/bpf, I get this:

  make[2]: *** No rule to make target '/home/jemarch/gnu/src/bpf-next/tools/testing/selftests/bpf/tools/build/libbpflibbpfbpf_helper_defs.h', needed by '/home/jemarch/gnu/src/bpf-next/tools/testing/selftests/bpf/tools/build/libbpf/include/bpf/libbpfbpf_helper_defs.h'.  Stop.


Same thing happens if I have a built tree and I do `make' in
tools/testing/selftests/bpf.

In tools/lib/bpf/Makefile there is:

  BPF_HELPER_DEFS	:= $(OUTPUT)bpf_helper_defs.h

which assumes OUTPUT always has a trailing slash, which seems to be a
common expectation for OUTPUT among all the Makefiles.

In tools/bpf/runqslower/Makefile we find:

  BPFTOOL_OUTPUT := $(OUTPUT)bpftool/
  DEFAULT_BPFTOOL := $(BPFTOOL_OUTPUT)bootstrap/bpftool
  [...]
  $(BPFOBJ): $(wildcard $(LIBBPF_SRC)/*.[ch] $(LIBBPF_SRC)/Makefile) | $(BPFOBJ_OUTPUT)
	$(Q)$(MAKE) $(submake_extras) -C $(LIBBPF_SRC) OUTPUT=$(BPFOBJ_OUTPUT) \
		    DESTDIR=$(BPFOBJ_OUTPUT) prefix= $(abspath $@) install_headers

which is ok because BPFTOOL_OUTPUT is defined with a trailing slash.

However in tools/testing/selftests/bpf/Makefile an explicit value for
BPFTOOL_OUTPUT is specified, that lacks a trailing slash:

  $(OUTPUT)/runqslower: $(BPFOBJ) | $(DEFAULT_BPFTOOL) $(RUNQSLOWER_OUTPUT)
	$(Q)$(MAKE) $(submake_extras) -C $(TOOLSDIR)/bpf/runqslower	       \
		    OUTPUT=$(RUNQSLOWER_OUTPUT) VMLINUX_BTF=$(VMLINUX_BTF)     \
		    BPFTOOL_OUTPUT=$(HOST_BUILD_DIR)/bpftool/		       \
		    BPFOBJ_OUTPUT=$(BUILD_DIR)/libbpf			       \
		    BPFOBJ=$(BPFOBJ) BPF_INCLUDE=$(INCLUDE_DIR)		       \
		    EXTRA_CFLAGS='-g $(OPT_FLAGS) $(SAN_CFLAGS)'	       \
		    EXTRA_LDFLAGS='$(SAN_LDFLAGS)' &&			       \
		    cp $(RUNQSLOWER_OUTPUT)runqslower $@

This results in a malformed

  BPF_HELPER_DEFS	:= $(OUTPUT)bpf_helper_defs.h

in tools/lib/bpf/Makefile.

The patch below fixes this, but there are other many possible fixes
(like changing tools/bpf/runqslower/Makefile in order to pass
OUTPUT=$(BPFOBJ_OUTPUT)/, or changing tools/lib/bpf/Makefile to use
$(OUTPUT)/bpf_helper_defs.h) and I don't know which one you would
prefer.

Also, since the involved rules have not been changed recently, I am
wondering why this is being noted only now.  Is people using another
set-up/workflow that somehow doesn't trigger this?

diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile
index ca8b73f7c774..665a5c1e9b8e 100644
--- a/tools/testing/selftests/bpf/Makefile
+++ b/tools/testing/selftests/bpf/Makefile
@@ -274,7 +274,7 @@ $(OUTPUT)/runqslower: $(BPFOBJ) | $(DEFAULT_BPFTOOL) $(RUNQSLOWER_OUTPUT)
 	$(Q)$(MAKE) $(submake_extras) -C $(TOOLSDIR)/bpf/runqslower	       \
 		    OUTPUT=$(RUNQSLOWER_OUTPUT) VMLINUX_BTF=$(VMLINUX_BTF)     \
 		    BPFTOOL_OUTPUT=$(HOST_BUILD_DIR)/bpftool/		       \
-		    BPFOBJ_OUTPUT=$(BUILD_DIR)/libbpf			       \
+		    BPFOBJ_OUTPUT=$(BUILD_DIR)/libbpf/			       \
 		    BPFOBJ=$(BPFOBJ) BPF_INCLUDE=$(INCLUDE_DIR)		       \
 		    EXTRA_CFLAGS='-g $(OPT_FLAGS) $(SAN_CFLAGS)'	       \
 		    EXTRA_LDFLAGS='$(SAN_LDFLAGS)' &&			       \




[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