diff mbox series

[v8,bpf-next,04/10] xdp: Helper function to clear kernel pointers in xdp_frame

Message ID 1533283098-2397-5-git-send-email-makita.toshiaki@lab.ntt.co.jp
State Accepted, archived
Delegated to: BPF Maintainers
Headers show
Series veth: Driver XDP | expand

Commit Message

Toshiaki Makita Aug. 3, 2018, 7:58 a.m. UTC
xdp_frame has kernel pointers which should not be readable from bpf
programs. When we want to reuse xdp_frame region but it may be read by
bpf programs later, we can use this helper to clear kernel pointers.
This is more efficient than calling memset() for the entire struct.

Signed-off-by: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
---
 include/net/xdp.h | 7 +++++++
 1 file changed, 7 insertions(+)

Comments

Jesper Dangaard Brouer Aug. 3, 2018, 9:06 a.m. UTC | #1
On Fri,  3 Aug 2018 16:58:12 +0900
Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp> wrote:

> xdp_frame has kernel pointers which should not be readable from bpf
> programs. When we want to reuse xdp_frame region but it may be read by
> bpf programs later, we can use this helper to clear kernel pointers.
> This is more efficient than calling memset() for the entire struct.
> 
> Signed-off-by: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>

Acked-by: Jesper Dangaard Brouer <brouer@redhat.com>

After this patch is applied, I will take care of updating cpumap in a
similar way. Thanks.
diff mbox series

Patch

diff --git a/include/net/xdp.h b/include/net/xdp.h
index fcb033f..76b9525 100644
--- a/include/net/xdp.h
+++ b/include/net/xdp.h
@@ -84,6 +84,13 @@  struct xdp_frame {
 	struct net_device *dev_rx; /* used by cpumap */
 };
 
+/* Clear kernel pointers in xdp_frame */
+static inline void xdp_scrub_frame(struct xdp_frame *frame)
+{
+	frame->data = NULL;
+	frame->dev_rx = NULL;
+}
+
 /* Convert xdp_buff to xdp_frame */
 static inline
 struct xdp_frame *convert_to_xdp_frame(struct xdp_buff *xdp)