[SRU][F:linux-bluefield][PATCH 12/21] xdp: Clear grow memory in bpf_xdp_adjust_tail()
Bodong Wang
bodong at nvidia.com
Mon Jul 5 15:39:50 UTC 2021
From: Jesper Dangaard Brouer <brouer at redhat.com>
BugLink: https://bugs.launchpad.net/bugs/1934499
Clearing memory of tail when grow happens, because it is too easy
to write a XDP_PASS program that extend the tail, which expose
this memory to users that can run tcpdump.
Signed-off-by: Jesper Dangaard Brouer <brouer at redhat.com>
Signed-off-by: Alexei Starovoitov <ast at kernel.org>
Acked-by: Toke Høiland-Jørgensen <toke at redhat.com>
Link: https://lore.kernel.org/bpf/158945349039.97035.5262100484553494.stgit@firesoul
(cherry picked from commit ddb47d518ca10948d1f64a983cb9274720f691cd)
Signed-off-by: Maxim Mikityanskiy <maximmi at nvidia.com>
Reviewed-by: Moshe Shemesh <moshe at nvidia.com>
Signed-off-by: Bodong Wang <bodong at nvidia.com>
---
net/core/filter.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/net/core/filter.c b/net/core/filter.c
index c826b0c..609fe9f 100644
--- a/net/core/filter.c
+++ b/net/core/filter.c
@@ -3424,6 +3424,10 @@ static unsigned long xdp_get_metalen(const struct xdp_buff *xdp)
if (unlikely(data_end < xdp->data + ETH_HLEN))
return -EINVAL;
+ /* Clear memory area on grow, can contain uninit kernel memory */
+ if (offset > 0)
+ memset(xdp->data_end, 0, offset);
+
xdp->data_end = data_end;
return 0;
--
1.8.3.1
More information about the kernel-team
mailing list