diff options
author | Stanislav Fomichev <sdf@google.com> | 2021-01-27 15:28:53 -0800 |
---|---|---|
committer | Daniel Borkmann <daniel@iogearbox.net> | 2021-01-29 02:09:31 +0100 |
commit | 4c3384d7abe58a68d78fd1b8b3bffbf62e1e29a1 (patch) | |
tree | 66b67311b707d50eda22b0151cd7278549e9b405 /tools/testing/selftests/bpf/progs/recvmsg6_prog.c | |
parent | 357490601621d077c2c90473fec66d7a8badedcc (diff) | |
download | linux-4c3384d7abe58a68d78fd1b8b3bffbf62e1e29a1.tar.bz2 |
bpf: Enable bpf_{g,s}etsockopt in BPF_CGROUP_UDP{4,6}_RECVMSG
Those hooks run as BPF_CGROUP_RUN_SA_PROG_LOCK and operate on a locked socket.
Note that we could remove the switch for prog->expected_attach_type altogether
since all current sock_addr attach types are covered. However, it makes sense
to keep it as a safe-guard in case new sock_addr attach types are added that
might not operate on a locked socket. Therefore, avoid to let this slip through.
Signed-off-by: Stanislav Fomichev <sdf@google.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20210127232853.3753823-5-sdf@google.com
Diffstat (limited to 'tools/testing/selftests/bpf/progs/recvmsg6_prog.c')
-rw-r--r-- | tools/testing/selftests/bpf/progs/recvmsg6_prog.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/tools/testing/selftests/bpf/progs/recvmsg6_prog.c b/tools/testing/selftests/bpf/progs/recvmsg6_prog.c index 6060fd63324b..27dfb21b21b4 100644 --- a/tools/testing/selftests/bpf/progs/recvmsg6_prog.c +++ b/tools/testing/selftests/bpf/progs/recvmsg6_prog.c @@ -8,6 +8,8 @@ #include <bpf/bpf_helpers.h> #include <bpf/bpf_endian.h> +#include <bpf_sockopt_helpers.h> + #define SERV6_IP_0 0xfaceb00c /* face:b00c:1234:5678::abcd */ #define SERV6_IP_1 0x12345678 #define SERV6_IP_2 0x00000000 @@ -31,6 +33,9 @@ int recvmsg6_prog(struct bpf_sock_addr *ctx) if (ctx->type != SOCK_STREAM && ctx->type != SOCK_DGRAM) return 1; + if (!get_set_sk_priority(ctx)) + return 1; + ctx->user_ip6[0] = bpf_htonl(SERV6_IP_0); ctx->user_ip6[1] = bpf_htonl(SERV6_IP_1); ctx->user_ip6[2] = bpf_htonl(SERV6_IP_2); |