summaryrefslogtreecommitdiffstats
path: root/tools/testing/selftests/bpf/progs/recvmsg6_prog.c
diff options
context:
space:
mode:
authorStanislav Fomichev <sdf@google.com>2021-01-27 15:28:53 -0800
committerDaniel Borkmann <daniel@iogearbox.net>2021-01-29 02:09:31 +0100
commit4c3384d7abe58a68d78fd1b8b3bffbf62e1e29a1 (patch)
tree66b67311b707d50eda22b0151cd7278549e9b405 /tools/testing/selftests/bpf/progs/recvmsg6_prog.c
parent357490601621d077c2c90473fec66d7a8badedcc (diff)
downloadlinux-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.c5
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);