123456789101112131415161718192021 |
- --- a/include/linux/skbuff.h
- +++ b/include/linux/skbuff.h
- @@ -1850,12 +1850,15 @@ static inline int skb_clone_writable(con
- static inline int __skb_cow(struct sk_buff *skb, unsigned int headroom,
- int cloned)
- {
- + unsigned int alloc_headroom = headroom;
- int delta = 0;
-
- if (headroom < NET_SKB_PAD)
- - headroom = NET_SKB_PAD;
- - if (headroom > skb_headroom(skb))
- - delta = headroom - skb_headroom(skb);
- + alloc_headroom = NET_SKB_PAD;
- + if (headroom > skb_headroom(skb) ||
- + (cloned && alloc_headroom > skb_headroom(skb))) {
- + delta = alloc_headroom - skb_headroom(skb);
- + }
-
- if (delta || cloned)
- return pskb_expand_head(skb, ALIGN(delta, NET_SKB_PAD), 0,
|