diff options
author | David S. Miller <davem@sunset.davemloft.net> | 2006-04-19 18:37:13 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-04-19 18:37:13 -0400 |
commit | 5185db09f46ed64d520d09db6e93852e44106628 (patch) | |
tree | 13d888ea59a80aafa593015f88feb4245288055c /net/llc | |
parent | 3672558c6180ca28a7aa46765702467a37e58fc5 (diff) |
[LLC]: Use pskb_trim_rcsum() in llc_fixup_skb().
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>
Diffstat (limited to 'net/llc')
-rw-r--r-- | net/llc/llc_input.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/net/llc/llc_input.c b/net/llc/llc_input.c index 8f3addf0724c..d62e0f9b9da3 100644 --- a/net/llc/llc_input.c +++ b/net/llc/llc_input.c | |||
@@ -118,7 +118,8 @@ static inline int llc_fixup_skb(struct sk_buff *skb) | |||
118 | u16 pdulen = eth_hdr(skb)->h_proto, | 118 | u16 pdulen = eth_hdr(skb)->h_proto, |
119 | data_size = ntohs(pdulen) - llc_len; | 119 | data_size = ntohs(pdulen) - llc_len; |
120 | 120 | ||
121 | skb_trim(skb, data_size); | 121 | if (unlikely(pskb_trim_rcsum(skb, data_size))) |
122 | return 0; | ||
122 | } | 123 | } |
123 | return 1; | 124 | return 1; |
124 | } | 125 | } |