Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 31bac444 authored by Herbert Xu's avatar Herbert Xu Committed by David S. Miller
Browse files

[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: default avatarHerbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 559cf710
Loading
Loading
Loading
Loading
+3 −3
Original line number Original line Diff line number Diff line
@@ -385,12 +385,12 @@ static int pppoe_rcv(struct sk_buff *skb,
	struct pppoe_hdr *ph;
	struct pppoe_hdr *ph;
	struct pppox_sock *po;
	struct pppox_sock *po;


	if (!pskb_may_pull(skb, sizeof(struct pppoe_hdr)))
		goto drop;

	if (!(skb = skb_share_check(skb, GFP_ATOMIC)))
	if (!(skb = skb_share_check(skb, GFP_ATOMIC)))
		goto out;
		goto out;


	if (!pskb_may_pull(skb, sizeof(struct pppoe_hdr)))
		goto drop;

	ph = pppoe_hdr(skb);
	ph = pppoe_hdr(skb);


	po = get_item((unsigned long) ph->sid, eth_hdr(skb)->h_source, dev->ifindex);
	po = get_item((unsigned long) ph->sid, eth_hdr(skb)->h_source, dev->ifindex);