diff options
author | Herbert Xu <herbert@gondor.apana.org.au> | 2007-09-16 19:19:20 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2007-09-16 19:19:20 -0400 |
commit | 31bac44468257986484703cc09da8a9dcae88a36 (patch) | |
tree | 7782fb9da4c2d4266c6e8ae13cbb9bd50491cd49 /drivers | |
parent | 559cf710b07c5e2cfa3fb8d8f4a1320fd84c53f9 (diff) |
[PPP] pppoe: Fix skb_unshare_check call position
The skb_unshare_check call needs to be made before pskb_may_pull,
not after.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/pppoe.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/net/pppoe.c b/drivers/net/pppoe.c index 68631a5721ac..5ac3eff6a2a6 100644 --- a/drivers/net/pppoe.c +++ b/drivers/net/pppoe.c | |||
@@ -385,12 +385,12 @@ static int pppoe_rcv(struct sk_buff *skb, | |||
385 | struct pppoe_hdr *ph; | 385 | struct pppoe_hdr *ph; |
386 | struct pppox_sock *po; | 386 | struct pppox_sock *po; |
387 | 387 | ||
388 | if (!pskb_may_pull(skb, sizeof(struct pppoe_hdr))) | ||
389 | goto drop; | ||
390 | |||
391 | if (!(skb = skb_share_check(skb, GFP_ATOMIC))) | 388 | if (!(skb = skb_share_check(skb, GFP_ATOMIC))) |
392 | goto out; | 389 | goto out; |
393 | 390 | ||
391 | if (!pskb_may_pull(skb, sizeof(struct pppoe_hdr))) | ||
392 | goto drop; | ||
393 | |||
394 | ph = pppoe_hdr(skb); | 394 | ph = pppoe_hdr(skb); |
395 | 395 | ||
396 | po = get_item((unsigned long) ph->sid, eth_hdr(skb)->h_source, dev->ifindex); | 396 | po = get_item((unsigned long) ph->sid, eth_hdr(skb)->h_source, dev->ifindex); |