This patch exports the member last_snd of struct mptcp_sock in
bpf_mptcp_helpers.h, and adds BPF write access to it.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
net/mptcp/bpf.c | 16 ++++++++++++++++
tools/testing/selftests/bpf/bpf_mptcp_helpers.h | 1 +
2 files changed, 17 insertions(+)
diff --git a/net/mptcp/bpf.c b/net/mptcp/bpf.c
index e849fc3fb6c5..bd3c50b07ab2 100644
--- a/net/mptcp/bpf.c
+++ b/net/mptcp/bpf.c
@@ -40,6 +40,7 @@ static int bpf_mptcp_sched_btf_struct_access(struct bpf_verifier_log *log,
{
const struct btf_type *state;
u32 type_id;
+ size_t end;
if (atype == BPF_READ)
return btf_struct_access(log, btf, t, off, size, atype,
@@ -55,6 +56,21 @@ static int bpf_mptcp_sched_btf_struct_access(struct bpf_verifier_log *log,
return -EACCES;
}
+ switch (off) {
+ case offsetof(struct mptcp_sock, last_snd):
+ end = offsetofend(struct mptcp_sock, last_snd);
+ break;
+ default:
+ bpf_log(log, "no write support to mptcp_sock at off %d\n", off);
+ return -EACCES;
+ }
+
+ if (off + size > end) {
+ bpf_log(log, "access beyond mptcp_sock at off %u size %u ended at %lu",
+ off, size, end);
+ return -EACCES;
+ }
+
return NOT_INIT;
}
diff --git a/tools/testing/selftests/bpf/bpf_mptcp_helpers.h b/tools/testing/selftests/bpf/bpf_mptcp_helpers.h
index 5135eb6710e8..990ccd2b6e96 100644
--- a/tools/testing/selftests/bpf/bpf_mptcp_helpers.h
+++ b/tools/testing/selftests/bpf/bpf_mptcp_helpers.h
@@ -9,6 +9,7 @@
struct mptcp_sock {
struct inet_connection_sock sk;
+ struct sock *last_snd;
__u32 token;
struct sock *first;
char ca_name[TCP_CA_NAME_MAX];
--
2.34.1