[LLC]: Use pskb_trim_rcsum() in llc_fixup_skb().
authorDavid S. Miller <davem@sunset.davemloft.net>
Wed, 19 Apr 2006 22:37:13 +0000 (15:37 -0700)
committerDavid S. Miller <davem@sunset.davemloft.net>
Wed, 19 Apr 2006 22:37:13 +0000 (15:37 -0700)
Kernel Bugzilla #6409

If we use plain skb_trim(), that's wrong, because if
the SKB is cloned, and it can be because we unshared
it in the caller, we have to allow reallocation.  The
pskb_trim*() family of routines is therefore the most
appropriate here.

Signed-off-by: David S. Miller <davem@davemloft.net>
net/llc/llc_input.c

index 8f3addf0724c01658c8c46b96677f701c52197f8..d62e0f9b9da3edca21a8292bc321764aa1866187 100644 (file)
@@ -118,7 +118,8 @@ static inline int llc_fixup_skb(struct sk_buff *skb)
                u16 pdulen = eth_hdr(skb)->h_proto,
                    data_size = ntohs(pdulen) - llc_len;
 
-               skb_trim(skb, data_size);
+               if (unlikely(pskb_trim_rcsum(skb, data_size)))
+                       return 0;
        }
        return 1;
 }