pskb_expand_head() copies headroom (including skb metadata) into the newly allocated head, but then clears the metadata. As a result, metadata is lost when BPF helpers trigger a headroom reallocation. Let the skb metadata be in the newly created copy of head. Signed-off-by: Jakub Sitnicki --- net/core/skbuff.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/net/core/skbuff.c b/net/core/skbuff.c index ee0274417948..dd58cc9c997f 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -2288,8 +2288,6 @@ int pskb_expand_head(struct sk_buff *skb, int nhead, int ntail, skb->nohdr = 0; atomic_set(&skb_shinfo(skb)->dataref, 1); - skb_metadata_clear(skb); - /* It is not generally safe to change skb->truesize. * For the moment, we really care of rx path, or * when skb is orphaned (not attached to a socket). -- 2.43.0