mbox series

[SRU,J,0/1] Fix bpf selftests build failure after v5.15.139 update

Message ID 20240222161218.118394-1-roxana.nicolescu@canonical.com
Headers show
Series Fix bpf selftests build failure after v5.15.139 update | expand

Message

Roxana Nicolescu Feb. 22, 2024, 4:12 p.m. UTC
BugLink: https://bugs.launchpad.net/bugs/2054567

Sru justification

[Impact]
Upstream v5.15.139 (#lp2049432) brought commit
 "selftests/bpf: Test tail call counting with bpf2bpf and data on stack"
that affects one of the bpf kselftests. Because LIBBPF_OPTS macro does not
 exist, it does not compile. Error is shown below.

[Fix]
Cherry-pick commit "libbpf: Rename DECLARE_LIBBPF_OPTS into LIBBPF_OPTS"

[Test]
This should be solved soon, but compileselftests debian rule does not
compile bpf selftests.
I tested it by using our regression testing tooling, but same results can
be achieved by running:
$ make -C linux/tools/testing/selftests TARGETS=bpf SKIP_TARGETS= clean all KDIR=/usr/src/linux-headers-5.15.0-<version>-generic
from the linux tree directory

Without the fix, it fails to compile:
  /root/autotest/client/tmp/ubuntu_bpf/src/linux/tools/testing/selftests/bpf/prog_tests/tailcalls.c: In function ‘test_tailcall_bpf2bpf_6’:
  /root/autotest/client/tmp/ubuntu_bpf/src/linux/tools/testing/selftests/bpf/prog_tests/tailcalls.c:822:9: warning: implicit declaration of function ‘LIBBPF_OPTS’; did you mean ‘LIBBPF_API’? [-Wimplicit-function-declaration]
    822 | LIBBPF_OPTS(bpf_test_run_opts, topts,
        | ^~~~~~~~~~~
        | LIBBPF_API
  /root/autotest/client/tmp/ubuntu_bpf/src/linux/tools/testing/selftests/bpf/prog_tests/tailcalls.c:822:21: error: ‘bpf_test_run_opts’ undeclared (first use in this function)
    822 | LIBBPF_OPTS(bpf_test_run_opts, topts,
        | ^~~~~~~~~~~~~~~~~
  /root/autotest/client/tmp/ubuntu_bpf/src/linux/tools/testing/selftests/bpf/prog_tests/tailcalls.c:822:21: note: each undeclared identifier is reported only once for each function it appears in
  /root/autotest/client/tmp/ubuntu_bpf/src/linux/tools/testing/selftests/bpf/prog_tests/tailcalls.c:822:40: error: ‘topts’ undeclared (first use in this function)
    822 | LIBBPF_OPTS(bpf_test_run_opts, topts,
        | ^~~~~
  /root/autotest/client/tmp/ubuntu_bpf/src/linux/tools/testing/selftests/bpf/prog_tests/tailcalls.c:823:17: error: expected expression before ‘.’ token
    823 | .data_in = &pkt_v4,
        | ^
  make[1]: *** [Makefile:471: /root/autotest/client/tmp/ubuntu_bpf/src/linux/tools/testing/selftests/bpf/tailcalls.test.o] Error 1
  make: *** [Makefile:172: all] Error 2

With the fix, it compiles.

[Regression potential]
The only place this is being used is selftests, so the risk is very low.

Andrii Nakryiko (1):
  libbpf: Rename DECLARE_LIBBPF_OPTS into LIBBPF_OPTS

 tools/lib/bpf/bpf.h           | 1 +
 tools/lib/bpf/libbpf_common.h | 2 +-
 tools/lib/bpf/libbpf_legacy.h | 1 +
 3 files changed, 3 insertions(+), 1 deletion(-)

Comments

Manuel Diewald Feb. 22, 2024, 4:24 p.m. UTC | #1
On Thu, Feb 22, 2024 at 05:12:17PM +0100, Roxana Nicolescu wrote:
> BugLink: https://bugs.launchpad.net/bugs/2054567
> 
> Sru justification
> 
> [Impact]
> Upstream v5.15.139 (#lp2049432) brought commit
>  "selftests/bpf: Test tail call counting with bpf2bpf and data on stack"
> that affects one of the bpf kselftests. Because LIBBPF_OPTS macro does not
>  exist, it does not compile. Error is shown below.
> 
> [Fix]
> Cherry-pick commit "libbpf: Rename DECLARE_LIBBPF_OPTS into LIBBPF_OPTS"
> 
> [Test]
> This should be solved soon, but compileselftests debian rule does not
> compile bpf selftests.
> I tested it by using our regression testing tooling, but same results can
> be achieved by running:
> $ make -C linux/tools/testing/selftests TARGETS=bpf SKIP_TARGETS= clean all KDIR=/usr/src/linux-headers-5.15.0-<version>-generic
> from the linux tree directory
> 
> Without the fix, it fails to compile:
>   /root/autotest/client/tmp/ubuntu_bpf/src/linux/tools/testing/selftests/bpf/prog_tests/tailcalls.c: In function ‘test_tailcall_bpf2bpf_6’:
>   /root/autotest/client/tmp/ubuntu_bpf/src/linux/tools/testing/selftests/bpf/prog_tests/tailcalls.c:822:9: warning: implicit declaration of function ‘LIBBPF_OPTS’; did you mean ‘LIBBPF_API’? [-Wimplicit-function-declaration]
>     822 | LIBBPF_OPTS(bpf_test_run_opts, topts,
>         | ^~~~~~~~~~~
>         | LIBBPF_API
>   /root/autotest/client/tmp/ubuntu_bpf/src/linux/tools/testing/selftests/bpf/prog_tests/tailcalls.c:822:21: error: ‘bpf_test_run_opts’ undeclared (first use in this function)
>     822 | LIBBPF_OPTS(bpf_test_run_opts, topts,
>         | ^~~~~~~~~~~~~~~~~
>   /root/autotest/client/tmp/ubuntu_bpf/src/linux/tools/testing/selftests/bpf/prog_tests/tailcalls.c:822:21: note: each undeclared identifier is reported only once for each function it appears in
>   /root/autotest/client/tmp/ubuntu_bpf/src/linux/tools/testing/selftests/bpf/prog_tests/tailcalls.c:822:40: error: ‘topts’ undeclared (first use in this function)
>     822 | LIBBPF_OPTS(bpf_test_run_opts, topts,
>         | ^~~~~
>   /root/autotest/client/tmp/ubuntu_bpf/src/linux/tools/testing/selftests/bpf/prog_tests/tailcalls.c:823:17: error: expected expression before ‘.’ token
>     823 | .data_in = &pkt_v4,
>         | ^
>   make[1]: *** [Makefile:471: /root/autotest/client/tmp/ubuntu_bpf/src/linux/tools/testing/selftests/bpf/tailcalls.test.o] Error 1
>   make: *** [Makefile:172: all] Error 2
> 
> With the fix, it compiles.
> 
> [Regression potential]
> The only place this is being used is selftests, so the risk is very low.
> 
> Andrii Nakryiko (1):
>   libbpf: Rename DECLARE_LIBBPF_OPTS into LIBBPF_OPTS
> 
>  tools/lib/bpf/bpf.h           | 1 +
>  tools/lib/bpf/libbpf_common.h | 2 +-
>  tools/lib/bpf/libbpf_legacy.h | 1 +
>  3 files changed, 3 insertions(+), 1 deletion(-)
> 
> -- 
> 2.34.1
> 
> 
> -- 
> kernel-team mailing list
> kernel-team@lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team

Acked-by: Manuel Diewald <manuel.diewald@canonical.com>
Roxana Nicolescu Feb. 23, 2024, 1:46 p.m. UTC | #2
On 22/02/2024 17:12, Roxana Nicolescu wrote:
> BugLink: https://bugs.launchpad.net/bugs/2054567
>
> Sru justification
>
> [Impact]
> Upstream v5.15.139 (#lp2049432) brought commit
>   "selftests/bpf: Test tail call counting with bpf2bpf and data on stack"
> that affects one of the bpf kselftests. Because LIBBPF_OPTS macro does not
>   exist, it does not compile. Error is shown below.
>
> [Fix]
> Cherry-pick commit "libbpf: Rename DECLARE_LIBBPF_OPTS into LIBBPF_OPTS"
>
> [Test]
> This should be solved soon, but compileselftests debian rule does not
> compile bpf selftests.
> I tested it by using our regression testing tooling, but same results can
> be achieved by running:
> $ make -C linux/tools/testing/selftests TARGETS=bpf SKIP_TARGETS= clean all KDIR=/usr/src/linux-headers-5.15.0-<version>-generic
> from the linux tree directory
>
> Without the fix, it fails to compile:
>    /root/autotest/client/tmp/ubuntu_bpf/src/linux/tools/testing/selftests/bpf/prog_tests/tailcalls.c: In function ‘test_tailcall_bpf2bpf_6’:
>    /root/autotest/client/tmp/ubuntu_bpf/src/linux/tools/testing/selftests/bpf/prog_tests/tailcalls.c:822:9: warning: implicit declaration of function ‘LIBBPF_OPTS’; did you mean ‘LIBBPF_API’? [-Wimplicit-function-declaration]
>      822 | LIBBPF_OPTS(bpf_test_run_opts, topts,
>          | ^~~~~~~~~~~
>          | LIBBPF_API
>    /root/autotest/client/tmp/ubuntu_bpf/src/linux/tools/testing/selftests/bpf/prog_tests/tailcalls.c:822:21: error: ‘bpf_test_run_opts’ undeclared (first use in this function)
>      822 | LIBBPF_OPTS(bpf_test_run_opts, topts,
>          | ^~~~~~~~~~~~~~~~~
>    /root/autotest/client/tmp/ubuntu_bpf/src/linux/tools/testing/selftests/bpf/prog_tests/tailcalls.c:822:21: note: each undeclared identifier is reported only once for each function it appears in
>    /root/autotest/client/tmp/ubuntu_bpf/src/linux/tools/testing/selftests/bpf/prog_tests/tailcalls.c:822:40: error: ‘topts’ undeclared (first use in this function)
>      822 | LIBBPF_OPTS(bpf_test_run_opts, topts,
>          | ^~~~~
>    /root/autotest/client/tmp/ubuntu_bpf/src/linux/tools/testing/selftests/bpf/prog_tests/tailcalls.c:823:17: error: expected expression before ‘.’ token
>      823 | .data_in = &pkt_v4,
>          | ^
>    make[1]: *** [Makefile:471: /root/autotest/client/tmp/ubuntu_bpf/src/linux/tools/testing/selftests/bpf/tailcalls.test.o] Error 1
>    make: *** [Makefile:172: all] Error 2
>
> With the fix, it compiles.
>
> [Regression potential]
> The only place this is being used is selftests, so the risk is very low.
>
> Andrii Nakryiko (1):
>    libbpf: Rename DECLARE_LIBBPF_OPTS into LIBBPF_OPTS
>
>   tools/lib/bpf/bpf.h           | 1 +
>   tools/lib/bpf/libbpf_common.h | 2 +-
>   tools/lib/bpf/libbpf_legacy.h | 1 +
>   3 files changed, 3 insertions(+), 1 deletion(-)
>
The test changes have been reverted in 5.15.149. I'll drop this and just 
come back with the revert commit.
Tim Gardner Feb. 23, 2024, 3:11 p.m. UTC | #3
On 2/22/24 09:12, Roxana Nicolescu wrote:
> BugLink: https://bugs.launchpad.net/bugs/2054567
> 
> Sru justification
> 
> [Impact]
> Upstream v5.15.139 (#lp2049432) brought commit
>   "selftests/bpf: Test tail call counting with bpf2bpf and data on stack"
> that affects one of the bpf kselftests. Because LIBBPF_OPTS macro does not
>   exist, it does not compile. Error is shown below.
> 
> [Fix]
> Cherry-pick commit "libbpf: Rename DECLARE_LIBBPF_OPTS into LIBBPF_OPTS"
> 
> [Test]
> This should be solved soon, but compileselftests debian rule does not
> compile bpf selftests.
> I tested it by using our regression testing tooling, but same results can
> be achieved by running:
> $ make -C linux/tools/testing/selftests TARGETS=bpf SKIP_TARGETS= clean all KDIR=/usr/src/linux-headers-5.15.0-<version>-generic
> from the linux tree directory
> 
> Without the fix, it fails to compile:
>    /root/autotest/client/tmp/ubuntu_bpf/src/linux/tools/testing/selftests/bpf/prog_tests/tailcalls.c: In function ‘test_tailcall_bpf2bpf_6’:
>    /root/autotest/client/tmp/ubuntu_bpf/src/linux/tools/testing/selftests/bpf/prog_tests/tailcalls.c:822:9: warning: implicit declaration of function ‘LIBBPF_OPTS’; did you mean ‘LIBBPF_API’? [-Wimplicit-function-declaration]
>      822 | LIBBPF_OPTS(bpf_test_run_opts, topts,
>          | ^~~~~~~~~~~
>          | LIBBPF_API
>    /root/autotest/client/tmp/ubuntu_bpf/src/linux/tools/testing/selftests/bpf/prog_tests/tailcalls.c:822:21: error: ‘bpf_test_run_opts’ undeclared (first use in this function)
>      822 | LIBBPF_OPTS(bpf_test_run_opts, topts,
>          | ^~~~~~~~~~~~~~~~~
>    /root/autotest/client/tmp/ubuntu_bpf/src/linux/tools/testing/selftests/bpf/prog_tests/tailcalls.c:822:21: note: each undeclared identifier is reported only once for each function it appears in
>    /root/autotest/client/tmp/ubuntu_bpf/src/linux/tools/testing/selftests/bpf/prog_tests/tailcalls.c:822:40: error: ‘topts’ undeclared (first use in this function)
>      822 | LIBBPF_OPTS(bpf_test_run_opts, topts,
>          | ^~~~~
>    /root/autotest/client/tmp/ubuntu_bpf/src/linux/tools/testing/selftests/bpf/prog_tests/tailcalls.c:823:17: error: expected expression before ‘.’ token
>      823 | .data_in = &pkt_v4,
>          | ^
>    make[1]: *** [Makefile:471: /root/autotest/client/tmp/ubuntu_bpf/src/linux/tools/testing/selftests/bpf/tailcalls.test.o] Error 1
>    make: *** [Makefile:172: all] Error 2
> 
> With the fix, it compiles.
> 
> [Regression potential]
> The only place this is being used is selftests, so the risk is very low.
> 
> Andrii Nakryiko (1):
>    libbpf: Rename DECLARE_LIBBPF_OPTS into LIBBPF_OPTS
> 
>   tools/lib/bpf/bpf.h           | 1 +
>   tools/lib/bpf/libbpf_common.h | 2 +-
>   tools/lib/bpf/libbpf_legacy.h | 1 +
>   3 files changed, 3 insertions(+), 1 deletion(-)
> 
Acked-by: Tim Gardner <tim.gardner@canonical.com>