[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-Id: <20230620213227.180421-2-kuifeng@meta.com>
Date: Tue, 20 Jun 2023 14:32:26 -0700
From: Kui-Feng Lee <thinker.li@...il.com>
To: netdev@...r.kernel.org
Cc: kuba@...nel.org,
Kui-Feng Lee <kuifeng@...a.com>
Subject: [PATCH bpf-next v3 1/2] net: bpf: Always call BPF cgroup filters for egress.
Always call BPF filters if CGROUP BPF is enabled for EGRESS without
checking skb->sk against sk.
The filters were called only if skb is owned by the sock that the
skb is sent out through. In another words, skb->sk should point to
the sock that it is sending through its egress. However, the filters would
miss SYNACK skbs that they are owned by a request_sock but sent through
the listening sock, that is the socket listening incoming connections.
This is an unnecessary restrict.
Signed-off-by: Kui-Feng Lee <kuifeng@...a.com>
---
include/linux/bpf-cgroup.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/linux/bpf-cgroup.h b/include/linux/bpf-cgroup.h
index 57e9e109257e..e656da531f9f 100644
--- a/include/linux/bpf-cgroup.h
+++ b/include/linux/bpf-cgroup.h
@@ -199,7 +199,7 @@ static inline bool cgroup_bpf_sock_enabled(struct sock *sk,
#define BPF_CGROUP_RUN_PROG_INET_EGRESS(sk, skb) \
({ \
int __ret = 0; \
- if (cgroup_bpf_enabled(CGROUP_INET_EGRESS) && sk && sk == skb->sk) { \
+ if (cgroup_bpf_enabled(CGROUP_INET_EGRESS) && sk) { \
typeof(sk) __sk = sk_to_full_sk(sk); \
if (sk_fullsock(__sk) && \
cgroup_bpf_sock_enabled(__sk, CGROUP_INET_EGRESS)) \
--
2.34.1
Powered by blists - more mailing lists