diff mbox series

selftests/bpf: Fix sockopt selftest failure on powerpc

Message ID 20250311084647.3686544-1-skb99@linux.ibm.com (mailing list archive)
State Accepted
Commit 2d7597d67e3c7be7e5aa940e98115214061654dd
Delegated to: BPF
Headers show
Series selftests/bpf: Fix sockopt selftest failure on powerpc | expand

Checks

Context Check Description
netdev/tree_selection success Not a local patch
bpf/vmtest-bpf-next-PR success PR summary
bpf/vmtest-bpf-next-VM_Test-0 success Logs for Lint
bpf/vmtest-bpf-next-VM_Test-2 success Logs for Unittests
bpf/vmtest-bpf-next-VM_Test-5 success Logs for aarch64-gcc / build / build for aarch64 with gcc
bpf/vmtest-bpf-next-VM_Test-7 success Logs for aarch64-gcc / test (test_maps, false, 360) / test_maps on aarch64 with gcc
bpf/vmtest-bpf-next-VM_Test-10 success Logs for aarch64-gcc / test (test_verifier, false, 360) / test_verifier on aarch64 with gcc
bpf/vmtest-bpf-next-VM_Test-11 success Logs for aarch64-gcc / veristat-kernel
bpf/vmtest-bpf-next-VM_Test-14 success Logs for s390x-gcc / build / build for s390x with gcc
bpf/vmtest-bpf-next-VM_Test-12 success Logs for aarch64-gcc / veristat-meta
bpf/vmtest-bpf-next-VM_Test-13 success Logs for s390x-gcc / GCC BPF
bpf/vmtest-bpf-next-VM_Test-15 success Logs for s390x-gcc / build-release
bpf/vmtest-bpf-next-VM_Test-19 success Logs for s390x-gcc / veristat-kernel
bpf/vmtest-bpf-next-VM_Test-18 success Logs for s390x-gcc / test (test_verifier, false, 360) / test_verifier on s390x with gcc
bpf/vmtest-bpf-next-VM_Test-21 success Logs for set-matrix
bpf/vmtest-bpf-next-VM_Test-22 success Logs for x86_64-gcc / GCC BPF / GCC BPF
bpf/vmtest-bpf-next-VM_Test-24 success Logs for x86_64-gcc / build-release
bpf/vmtest-bpf-next-VM_Test-23 success Logs for x86_64-gcc / build / build for x86_64 with gcc
bpf/vmtest-bpf-next-VM_Test-25 success Logs for x86_64-gcc / test (test_maps, false, 360) / test_maps on x86_64 with gcc
bpf/vmtest-bpf-next-VM_Test-20 success Logs for s390x-gcc / veristat-meta
bpf/vmtest-bpf-next-VM_Test-30 success Logs for x86_64-gcc / test (test_verifier, false, 360) / test_verifier on x86_64 with gcc
bpf/vmtest-bpf-next-VM_Test-29 success Logs for x86_64-gcc / test (test_progs_parallel, true, 30) / test_progs_parallel on x86_64 with gcc
bpf/vmtest-bpf-next-VM_Test-32 success Logs for x86_64-gcc / veristat-meta / x86_64-gcc veristat_meta
bpf/vmtest-bpf-next-VM_Test-35 success Logs for x86_64-llvm-17 / build-release / build for x86_64 with llvm-17-O2
bpf/vmtest-bpf-next-VM_Test-31 success Logs for x86_64-gcc / veristat-kernel / x86_64-gcc veristat_kernel
bpf/vmtest-bpf-next-VM_Test-33 success Logs for x86_64-llvm-17 / GCC BPF / GCC BPF
bpf/vmtest-bpf-next-VM_Test-34 success Logs for x86_64-llvm-17 / build / build for x86_64 with llvm-17
bpf/vmtest-bpf-next-VM_Test-36 success Logs for x86_64-llvm-17 / test (test_maps, false, 360) / test_maps on x86_64 with llvm-17
bpf/vmtest-bpf-next-VM_Test-40 success Logs for x86_64-llvm-17 / veristat-kernel
bpf/vmtest-bpf-next-VM_Test-42 success Logs for x86_64-llvm-18 / GCC BPF / GCC BPF
bpf/vmtest-bpf-next-VM_Test-39 success Logs for x86_64-llvm-17 / test (test_verifier, false, 360) / test_verifier on x86_64 with llvm-17
bpf/vmtest-bpf-next-VM_Test-41 success Logs for x86_64-llvm-17 / veristat-meta
bpf/vmtest-bpf-next-VM_Test-43 success Logs for x86_64-llvm-18 / build / build for x86_64 with llvm-18
bpf/vmtest-bpf-next-VM_Test-44 success Logs for x86_64-llvm-18 / build-release / build for x86_64 with llvm-18-O2
bpf/vmtest-bpf-next-VM_Test-51 success Logs for x86_64-llvm-18 / veristat-meta
bpf/vmtest-bpf-next-VM_Test-50 success Logs for x86_64-llvm-18 / veristat-kernel
bpf/vmtest-bpf-next-VM_Test-8 success Logs for aarch64-gcc / test (test_progs, false, 360) / test_progs on aarch64 with gcc
bpf/vmtest-bpf-next-VM_Test-9 success Logs for aarch64-gcc / test (test_progs_no_alu32, false, 360) / test_progs_no_alu32 on aarch64 with gcc
bpf/vmtest-bpf-next-VM_Test-27 success Logs for x86_64-gcc / test (test_progs_no_alu32, false, 360) / test_progs_no_alu32 on x86_64 with gcc
bpf/vmtest-bpf-next-VM_Test-26 success Logs for x86_64-gcc / test (test_progs, false, 360) / test_progs on x86_64 with gcc
bpf/vmtest-bpf-next-VM_Test-28 success Logs for x86_64-gcc / test (test_progs_no_alu32_parallel, true, 30) / test_progs_no_alu32_parallel on x86_64 with gcc
bpf/vmtest-bpf-next-VM_Test-45 success Logs for x86_64-llvm-18 / test (test_maps, false, 360) / test_maps on x86_64 with llvm-18
bpf/vmtest-bpf-next-VM_Test-37 success Logs for x86_64-llvm-17 / test (test_progs, false, 360) / test_progs on x86_64 with llvm-17
bpf/vmtest-bpf-next-VM_Test-49 success Logs for x86_64-llvm-18 / test (test_verifier, false, 360) / test_verifier on x86_64 with llvm-18
bpf/vmtest-bpf-next-VM_Test-17 success Logs for s390x-gcc / test (test_progs_no_alu32, false, 360) / test_progs_no_alu32 on s390x with gcc
bpf/vmtest-bpf-next-VM_Test-16 success Logs for s390x-gcc / test (test_progs, false, 360) / test_progs on s390x with gcc
bpf/vmtest-bpf-next-VM_Test-38 success Logs for x86_64-llvm-17 / test (test_progs_no_alu32, false, 360) / test_progs_no_alu32 on x86_64 with llvm-17
bpf/vmtest-bpf-next-VM_Test-46 success Logs for x86_64-llvm-18 / test (test_progs, false, 360) / test_progs on x86_64 with llvm-18
bpf/vmtest-bpf-next-VM_Test-47 success Logs for x86_64-llvm-18 / test (test_progs_cpuv4, false, 360) / test_progs_cpuv4 on x86_64 with llvm-18
bpf/vmtest-bpf-next-VM_Test-48 success Logs for x86_64-llvm-18 / test (test_progs_no_alu32, false, 360) / test_progs_no_alu32 on x86_64 with llvm-18
bpf/vmtest-bpf-next-VM_Test-4 success Logs for set-matrix
bpf/vmtest-bpf-next-VM_Test-3 success Logs for s390x-gcc / build-release
bpf/vmtest-bpf-next-VM_Test-6 success Logs for x86_64-gcc / build-release
bpf/vmtest-bpf-next-VM_Test-1 success Logs for aarch64-gcc / build-release

Commit Message

Saket Kumar Bhaskar March 11, 2025, 8:46 a.m. UTC
The SO_RCVLOWAT option is defined as 18 in the selftest header,
which matches the generic definition. However, on powerpc,
SO_RCVLOWAT is defined as 16. This discrepancy causes
sol_socket_sockopt() to fail with the default switch case on powerpc.

This commit fixes by defining SO_RCVLOWAT as 16 for powerpc.

Signed-off-by: Saket Kumar Bhaskar <skb99@linux.ibm.com>
---
 tools/testing/selftests/bpf/progs/bpf_tracing_net.h | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Venkat Rao Bagalkote March 12, 2025, 7:17 a.m. UTC | #1
On 11/03/25 2:16 pm, Saket Kumar Bhaskar wrote:
> The SO_RCVLOWAT option is defined as 18 in the selftest header,
> which matches the generic definition. However, on powerpc,
> SO_RCVLOWAT is defined as 16. This discrepancy causes
> sol_socket_sockopt() to fail with the default switch case on powerpc.
>
> This commit fixes by defining SO_RCVLOWAT as 16 for powerpc.
>
> Signed-off-by: Saket Kumar Bhaskar <skb99@linux.ibm.com>
> ---
>   tools/testing/selftests/bpf/progs/bpf_tracing_net.h | 4 ++++
>   1 file changed, 4 insertions(+)
>
> diff --git a/tools/testing/selftests/bpf/progs/bpf_tracing_net.h b/tools/testing/selftests/bpf/progs/bpf_tracing_net.h
> index 59843b430f76..bcd44d5018bf 100644
> --- a/tools/testing/selftests/bpf/progs/bpf_tracing_net.h
> +++ b/tools/testing/selftests/bpf/progs/bpf_tracing_net.h
> @@ -15,7 +15,11 @@
>   #define SO_KEEPALIVE		9
>   #define SO_PRIORITY		12
>   #define SO_REUSEPORT		15
> +#if defined(__TARGET_ARCH_powerpc)
> +#define SO_RCVLOWAT		16
> +#else
>   #define SO_RCVLOWAT		18
> +#endif
>   #define SO_BINDTODEVICE		25
>   #define SO_MARK			36
>   #define SO_MAX_PACING_RATE	47


Applied this patch on linux-mainline and tested. It fixes the issue.

Without this patch:

#define SO_RCVBUF               8
#define SO_KEEPALIVE            9
#define SO_PRIORITY             12
#define SO_REUSEPORT            15
#define SO_RCVLOWAT             18
#define SO_BINDTODEVICE         25
#define SO_MARK                 36


  ./test_progs -t sockopt
#20      bpf_iter_setsockopt:OK
#21      bpf_iter_setsockopt_unix:OK
create_netns:PASS:create netns 0 nsec
create_netns:PASS:set lo up 0 nsec
create_netns:PASS:add veth 0 nsec
create_netns:PASS:bring veth up 0 nsec
test_setget_sockopt:PASS:open skel 0 nsec
test_setget_sockopt:PASS:if_nametoindex 0 nsec
test_setget_sockopt:PASS:load skel 0 nsec
test_setget_sockopt:PASS:attach cgroup 0 nsec
test_setget_sockopt:PASS:attach_cgroup 0 nsec
test_tcp:PASS:start_server 0 nsec
test_tcp:PASS:connect_to_fd_server 0 nsec
test_tcp:FAIL:nr_listen unexpected nr_listen: actual 0 != expected 1
test_tcp:FAIL:nr_connect unexpected nr_connect: actual 0 != expected 1
test_tcp:FAIL:nr_active unexpected nr_active: actual 0 != expected 1
test_tcp:FAIL:nr_passive unexpected nr_passive: actual 0 != expected 1
test_tcp:FAIL:nr_socket_post_create unexpected nr_socket_post_create: 
actual 0 != expected 2
test_tcp:PASS:nr_bind 0 nsec
test_tcp:PASS:start_server 0 nsec
test_tcp:PASS:connect_to_fd_server 0 nsec
test_tcp:FAIL:nr_listen unexpected nr_listen: actual 0 != expected 1
test_tcp:FAIL:nr_connect unexpected nr_connect: actual 0 != expected 1
test_tcp:FAIL:nr_active unexpected nr_active: actual 0 != expected 1
test_tcp:FAIL:nr_passive unexpected nr_passive: actual 0 != expected 1
test_tcp:FAIL:nr_socket_post_create unexpected nr_socket_post_create: 
actual 0 != expected 2
test_tcp:PASS:nr_bind 0 nsec
test_udp:PASS:start_server 0 nsec
test_udp:FAIL:nr_socket_post_create unexpected nr_socket_post_create: 
actual 0 < expected 1
test_udp:PASS:nr_bind 0 nsec
test_udp:PASS:start_server 0 nsec
test_udp:FAIL:nr_socket_post_create unexpected nr_socket_post_create: 
actual 0 < expected 1
test_udp:PASS:nr_bind 0 nsec
test_ktls:PASS:start_server 0 nsec
test_ktls:PASS:connect_to_fd 0 nsec
test_ktls:PASS:accept 0 nsec
test_ktls:PASS:setsockopt 0 nsec
test_ktls:PASS:setsockopt 0 nsec
test_ktls:PASS:setsockopt 0 nsec
test_ktls:PASS:setsockopt 0 nsec
test_ktls:PASS:read 0 nsec
test_ktls:FAIL:nr_listen unexpected nr_listen: actual 0 != expected 1
test_ktls:FAIL:nr_connect unexpected nr_connect: actual 0 != expected 1
test_ktls:FAIL:nr_active unexpected nr_active: actual 0 != expected 1
test_ktls:FAIL:nr_passive unexpected nr_passive: actual 0 != expected 1
test_ktls:FAIL:nr_socket_post_create unexpected nr_socket_post_create: 
actual 0 != expected 2
test_ktls:PASS:nr_bind 0 nsec
test_ktls:FAIL:nr_fin_wait1 unexpected nr_fin_wait1: actual 0 != expected 1
test_ktls:PASS:start_server 0 nsec
test_ktls:PASS:connect_to_fd 0 nsec
test_ktls:PASS:accept 0 nsec
test_ktls:PASS:setsockopt 0 nsec
test_ktls:PASS:setsockopt 0 nsec
test_ktls:PASS:setsockopt 0 nsec
test_ktls:PASS:setsockopt 0 nsec
test_ktls:PASS:read 0 nsec
test_ktls:FAIL:nr_listen unexpected nr_listen: actual 0 != expected 1
test_ktls:FAIL:nr_connect unexpected nr_connect: actual 0 != expected 1
test_ktls:FAIL:nr_active unexpected nr_active: actual 0 != expected 1
test_ktls:FAIL:nr_passive unexpected nr_passive: actual 0 != expected 1
test_ktls:FAIL:nr_socket_post_create unexpected nr_socket_post_create: 
actual 0 != expected 2
test_ktls:PASS:nr_bind 0 nsec
test_ktls:FAIL:nr_fin_wait1 unexpected nr_fin_wait1: actual 0 != expected 1
test_nonstandard_opt:PASS:start_server 0 nsec
test_nonstandard_opt:PASS:connect_to_fd_server 0 nsec
test_nonstandard_opt:PASS:getsockopt prog 0 nsec
test_nonstandard_opt:PASS:accept 0 nsec
test_nonstandard_opt:PASS:getsockopt_flags 0 nsec
test_nonstandard_opt:PASS:cb_flags_set 0 nsec
test_nonstandard_opt:PASS:start_server 0 nsec
test_nonstandard_opt:PASS:connect_to_fd_server 0 nsec
test_nonstandard_opt:PASS:getsockopt prog 0 nsec
test_nonstandard_opt:PASS:accept 0 nsec
test_nonstandard_opt:PASS:getsockopt_flags 0 nsec
test_nonstandard_opt:PASS:cb_flags_set 0 nsec
#303     setget_sockopt:FAIL
#326/1   sockopt/getsockopt: no expected_attach_type:OK
#326/2   sockopt/getsockopt: wrong expected_attach_type:OK
#326/3   sockopt/getsockopt: bypass bpf hook:OK
#326/4   sockopt/getsockopt: return EPERM from bpf hook:OK
#326/5   sockopt/getsockopt: no optval bounds check, deny loading:OK
#326/6   sockopt/getsockopt: read ctx->level:OK
#326/7   sockopt/getsockopt: deny writing to ctx->level:OK
#326/8   sockopt/getsockopt: read ctx->optname:OK
#326/9   sockopt/getsockopt: read ctx->retval:OK
#326/10  sockopt/getsockopt: deny writing to ctx->optname:OK
#326/11  sockopt/getsockopt: read ctx->optlen:OK
#326/12  sockopt/getsockopt: deny bigger ctx->optlen:OK
#326/13  sockopt/getsockopt: ignore >PAGE_SIZE optlen:OK
#326/14  sockopt/getsockopt: support smaller ctx->optlen:OK
#326/15  sockopt/getsockopt: deny writing to ctx->optval:OK
#326/16  sockopt/getsockopt: deny writing to ctx->optval_end:OK
#326/17  sockopt/getsockopt: rewrite value:OK
#326/18  sockopt/setsockopt: no expected_attach_type:OK
#326/19  sockopt/setsockopt: wrong expected_attach_type:OK
#326/20  sockopt/setsockopt: bypass bpf hook:OK
#326/21  sockopt/setsockopt: return EPERM from bpf hook:OK
#326/22  sockopt/setsockopt: no optval bounds check, deny loading:OK
#326/23  sockopt/setsockopt: read ctx->level:OK
#326/24  sockopt/setsockopt: allow changing ctx->level:OK
#326/25  sockopt/setsockopt: read ctx->optname:OK
#326/26  sockopt/setsockopt: allow changing ctx->optname:OK
#326/27  sockopt/setsockopt: read ctx->optlen:OK
#326/28  sockopt/setsockopt: ctx->optlen == -1 is ok:OK
#326/29  sockopt/setsockopt: deny ctx->optlen < 0 (except -1):OK
#326/30  sockopt/setsockopt: deny ctx->optlen > input optlen:OK
#326/31  sockopt/setsockopt: ignore >PAGE_SIZE optlen:OK
#326/32  sockopt/setsockopt: allow changing ctx->optlen within bounds:OK
#326/33  sockopt/setsockopt: deny write ctx->retval:OK
#326/34  sockopt/setsockopt: deny read ctx->retval:OK
#326/35  sockopt/setsockopt: deny writing to ctx->optval:OK
#326/36  sockopt/setsockopt: deny writing to ctx->optval_end:OK
#326/37  sockopt/setsockopt: allow IP_TOS <= 128:OK
#326/38  sockopt/setsockopt: deny IP_TOS > 128:OK
#326/39  sockopt/can attach only BPF_CGROUP_SETSOCKOP:OK
#326/40  sockopt/can attach only BPF_CGROUP_GETSOCKOP:OK
#326     sockopt:OK
#327     sockopt_inherit:OK
#328     sockopt_multi:OK
#329     sockopt_qos_to_cc:OK
#330     sockopt_sk:OK

All error logs:
create_netns:PASS:create netns 0 nsec
create_netns:PASS:set lo up 0 nsec
create_netns:PASS:add veth 0 nsec
create_netns:PASS:bring veth up 0 nsec
test_setget_sockopt:PASS:open skel 0 nsec
test_setget_sockopt:PASS:if_nametoindex 0 nsec
test_setget_sockopt:PASS:load skel 0 nsec
test_setget_sockopt:PASS:attach cgroup 0 nsec
test_setget_sockopt:PASS:attach_cgroup 0 nsec
test_tcp:PASS:start_server 0 nsec
test_tcp:PASS:connect_to_fd_server 0 nsec
test_tcp:FAIL:nr_listen unexpected nr_listen: actual 0 != expected 1
test_tcp:FAIL:nr_connect unexpected nr_connect: actual 0 != expected 1
test_tcp:FAIL:nr_active unexpected nr_active: actual 0 != expected 1
test_tcp:FAIL:nr_passive unexpected nr_passive: actual 0 != expected 1
test_tcp:FAIL:nr_socket_post_create unexpected nr_socket_post_create: 
actual 0 != expected 2
test_tcp:PASS:nr_bind 0 nsec
test_tcp:PASS:start_server 0 nsec
test_tcp:PASS:connect_to_fd_server 0 nsec
test_tcp:FAIL:nr_listen unexpected nr_listen: actual 0 != expected 1
test_tcp:FAIL:nr_connect unexpected nr_connect: actual 0 != expected 1
test_tcp:FAIL:nr_active unexpected nr_active: actual 0 != expected 1
test_tcp:FAIL:nr_passive unexpected nr_passive: actual 0 != expected 1
test_tcp:FAIL:nr_socket_post_create unexpected nr_socket_post_create: 
actual 0 != expected 2
test_tcp:PASS:nr_bind 0 nsec
test_udp:PASS:start_server 0 nsec
test_udp:FAIL:nr_socket_post_create unexpected nr_socket_post_create: 
actual 0 < expected 1
test_udp:PASS:nr_bind 0 nsec
test_udp:PASS:start_server 0 nsec
test_udp:FAIL:nr_socket_post_create unexpected nr_socket_post_create: 
actual 0 < expected 1
test_udp:PASS:nr_bind 0 nsec
test_ktls:PASS:start_server 0 nsec
test_ktls:PASS:connect_to_fd 0 nsec
test_ktls:PASS:accept 0 nsec
test_ktls:PASS:setsockopt 0 nsec
test_ktls:PASS:setsockopt 0 nsec
test_ktls:PASS:setsockopt 0 nsec
test_ktls:PASS:setsockopt 0 nsec
test_ktls:PASS:read 0 nsec
test_ktls:FAIL:nr_listen unexpected nr_listen: actual 0 != expected 1
test_ktls:FAIL:nr_connect unexpected nr_connect: actual 0 != expected 1
test_ktls:FAIL:nr_active unexpected nr_active: actual 0 != expected 1
test_ktls:FAIL:nr_passive unexpected nr_passive: actual 0 != expected 1
test_ktls:FAIL:nr_socket_post_create unexpected nr_socket_post_create: 
actual 0 != expected 2
test_ktls:PASS:nr_bind 0 nsec
test_ktls:FAIL:nr_fin_wait1 unexpected nr_fin_wait1: actual 0 != expected 1
test_ktls:PASS:start_server 0 nsec
test_ktls:PASS:connect_to_fd 0 nsec
test_ktls:PASS:accept 0 nsec
test_ktls:PASS:setsockopt 0 nsec
test_ktls:PASS:setsockopt 0 nsec
test_ktls:PASS:setsockopt 0 nsec
test_ktls:PASS:setsockopt 0 nsec
test_ktls:PASS:read 0 nsec
test_ktls:FAIL:nr_listen unexpected nr_listen: actual 0 != expected 1
test_ktls:FAIL:nr_connect unexpected nr_connect: actual 0 != expected 1
test_ktls:FAIL:nr_active unexpected nr_active: actual 0 != expected 1
test_ktls:FAIL:nr_passive unexpected nr_passive: actual 0 != expected 1
test_ktls:FAIL:nr_socket_post_create unexpected nr_socket_post_create: 
actual 0 != expected 2
test_ktls:PASS:nr_bind 0 nsec
test_ktls:FAIL:nr_fin_wait1 unexpected nr_fin_wait1: actual 0 != expected 1
test_nonstandard_opt:PASS:start_server 0 nsec
test_nonstandard_opt:PASS:connect_to_fd_server 0 nsec
test_nonstandard_opt:PASS:getsockopt prog 0 nsec
test_nonstandard_opt:PASS:accept 0 nsec
test_nonstandard_opt:PASS:getsockopt_flags 0 nsec
test_nonstandard_opt:PASS:cb_flags_set 0 nsec
test_nonstandard_opt:PASS:start_server 0 nsec
test_nonstandard_opt:PASS:connect_to_fd_server 0 nsec
test_nonstandard_opt:PASS:getsockopt prog 0 nsec
test_nonstandard_opt:PASS:accept 0 nsec
test_nonstandard_opt:PASS:getsockopt_flags 0 nsec
test_nonstandard_opt:PASS:cb_flags_set 0 nsec
#303     setget_sockopt:FAIL
Summary: 7/40 PASSED, 0 SKIPPED, 1 FAILED


With this patch:


#if defined(__TARGET_ARCH_powerpc)
#define SO_RCVLOWAT             16
#else
#define SO_RCVLOWAT             18
#endif
#define SO_BINDTODEVICE         25
#define SO_MARK                 36
#define SO_MAX_PACING_RATE      47


./test_progs -t sockopt
#20      bpf_iter_setsockopt:OK
#21      bpf_iter_setsockopt_unix:OK
#303     setget_sockopt:OK
#326/1   sockopt/getsockopt: no expected_attach_type:OK
#326/2   sockopt/getsockopt: wrong expected_attach_type:OK
#326/3   sockopt/getsockopt: bypass bpf hook:OK
#326/4   sockopt/getsockopt: return EPERM from bpf hook:OK
#326/5   sockopt/getsockopt: no optval bounds check, deny loading:OK
#326/6   sockopt/getsockopt: read ctx->level:OK
#326/7   sockopt/getsockopt: deny writing to ctx->level:OK
#326/8   sockopt/getsockopt: read ctx->optname:OK
#326/9   sockopt/getsockopt: read ctx->retval:OK
#326/10  sockopt/getsockopt: deny writing to ctx->optname:OK
#326/11  sockopt/getsockopt: read ctx->optlen:OK
#326/12  sockopt/getsockopt: deny bigger ctx->optlen:OK
#326/13  sockopt/getsockopt: ignore >PAGE_SIZE optlen:OK
#326/14  sockopt/getsockopt: support smaller ctx->optlen:OK
#326/15  sockopt/getsockopt: deny writing to ctx->optval:OK
#326/16  sockopt/getsockopt: deny writing to ctx->optval_end:OK
#326/17  sockopt/getsockopt: rewrite value:OK
#326/18  sockopt/setsockopt: no expected_attach_type:OK
#326/19  sockopt/setsockopt: wrong expected_attach_type:OK
#326/20  sockopt/setsockopt: bypass bpf hook:OK
#326/21  sockopt/setsockopt: return EPERM from bpf hook:OK
#326/22  sockopt/setsockopt: no optval bounds check, deny loading:OK
#326/23  sockopt/setsockopt: read ctx->level:OK
#326/24  sockopt/setsockopt: allow changing ctx->level:OK
#326/25  sockopt/setsockopt: read ctx->optname:OK
#326/26  sockopt/setsockopt: allow changing ctx->optname:OK
#326/27  sockopt/setsockopt: read ctx->optlen:OK
#326/28  sockopt/setsockopt: ctx->optlen == -1 is ok:OK
#326/29  sockopt/setsockopt: deny ctx->optlen < 0 (except -1):OK
#326/30  sockopt/setsockopt: deny ctx->optlen > input optlen:OK
#326/31  sockopt/setsockopt: ignore >PAGE_SIZE optlen:OK
#326/32  sockopt/setsockopt: allow changing ctx->optlen within bounds:OK
#326/33  sockopt/setsockopt: deny write ctx->retval:OK
#326/34  sockopt/setsockopt: deny read ctx->retval:OK
#326/35  sockopt/setsockopt: deny writing to ctx->optval:OK
#326/36  sockopt/setsockopt: deny writing to ctx->optval_end:OK
#326/37  sockopt/setsockopt: allow IP_TOS <= 128:OK
#326/38  sockopt/setsockopt: deny IP_TOS > 128:OK
#326/39  sockopt/can attach only BPF_CGROUP_SETSOCKOP:OK
#326/40  sockopt/can attach only BPF_CGROUP_GETSOCKOP:OK
#326     sockopt:OK
#327     sockopt_inherit:OK
#328     sockopt_multi:OK
#329     sockopt_qos_to_cc:OK
#330     sockopt_sk:OK
Summary: 8/40 PASSED, 0 SKIPPED, 0 FAILED

Please add below tag.

Tested-by: Venkat Rao Bagalkote <venkat88@linux.ibm.com>


Regards,

Venkat.
patchwork-bot+netdevbpf@kernel.org March 13, 2025, 9:30 p.m. UTC | #2
Hello:

This patch was applied to bpf/bpf-next.git (master)
by Andrii Nakryiko <andrii@kernel.org>:

On Tue, 11 Mar 2025 14:16:47 +0530 you wrote:
> The SO_RCVLOWAT option is defined as 18 in the selftest header,
> which matches the generic definition. However, on powerpc,
> SO_RCVLOWAT is defined as 16. This discrepancy causes
> sol_socket_sockopt() to fail with the default switch case on powerpc.
> 
> This commit fixes by defining SO_RCVLOWAT as 16 for powerpc.
> 
> [...]

Here is the summary with links:
  - selftests/bpf: Fix sockopt selftest failure on powerpc
    https://git.kernel.org/bpf/bpf-next/c/2d7597d67e3c

You are awesome, thank you!
diff mbox series

Patch

diff --git a/tools/testing/selftests/bpf/progs/bpf_tracing_net.h b/tools/testing/selftests/bpf/progs/bpf_tracing_net.h
index 59843b430f76..bcd44d5018bf 100644
--- a/tools/testing/selftests/bpf/progs/bpf_tracing_net.h
+++ b/tools/testing/selftests/bpf/progs/bpf_tracing_net.h
@@ -15,7 +15,11 @@ 
 #define SO_KEEPALIVE		9
 #define SO_PRIORITY		12
 #define SO_REUSEPORT		15
+#if defined(__TARGET_ARCH_powerpc)
+#define SO_RCVLOWAT		16
+#else
 #define SO_RCVLOWAT		18
+#endif
 #define SO_BINDTODEVICE		25
 #define SO_MARK			36
 #define SO_MAX_PACING_RATE	47