Prepare to track skb metadata location independently of MAC header offset.
Following changes will make skb_metadata_set() record where metadata ends
relative to skb->head. Hence the helper must be called when skb->data
points just past the metadata area.
Tweak XDP generic mode accordingly.
Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com>
---
net/core/dev.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/net/core/dev.c b/net/core/dev.c
index 9094c0fb8c68..7f984d86dfe9 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -5467,8 +5467,11 @@ u32 bpf_prog_run_generic_xdp(struct sk_buff *skb, struct xdp_buff *xdp,
break;
case XDP_PASS:
metalen = xdp->data - xdp->data_meta;
- if (metalen)
+ if (metalen) {
+ __skb_push(skb, mac_len);
skb_metadata_set(skb, metalen);
+ __skb_pull(skb, mac_len);
+ }
break;
}
--
2.43.0