kernel/3.3: remove yaffs support
[openwrt.git] / target / linux / generic / patches-3.3 / 654-avoid_skb_cow_realloc.patch
1 --- a/include/linux/skbuff.h
2 +++ b/include/linux/skbuff.h
3 @@ -1850,12 +1850,15 @@ static inline int skb_clone_writable(con
4  static inline int __skb_cow(struct sk_buff *skb, unsigned int headroom,
5                             int cloned)
6  {
7 +       unsigned int alloc_headroom = headroom;
8         int delta = 0;
9  
10         if (headroom < NET_SKB_PAD)
11 -               headroom = NET_SKB_PAD;
12 -       if (headroom > skb_headroom(skb))
13 -               delta = headroom - skb_headroom(skb);
14 +               alloc_headroom = NET_SKB_PAD;
15 +       if (headroom > skb_headroom(skb) ||
16 +           (cloned && alloc_headroom > skb_headroom(skb))) {
17 +               delta = alloc_headroom - skb_headroom(skb);
18 +       }
19  
20         if (delta || cloned)
21                 return pskb_expand_head(skb, ALIGN(delta, NET_SKB_PAD), 0,