pppoe.c: Fix kernel panic caused by __pppoe_xmit

__pppoe_xmit function return value was invalid resulting in
additional call to kfree_skb on already freed skb. This resulted in
memory corruption and consequent kernel panic after PPPoE peer
terminated the link.

This fixes commit 55c95e738d.

Reported-by: Gorik Van Steenberge <[email protected]>
Reported-by: Daniel Kenzelmann <[email protected]>
Reported-by: Denys Fedoryshchenko <[email protected]>
Reported-by: Pawel Staszewski <[email protected]>
Diagnosed-by: Andrej Ota <[email protected]>
Diagnosed-by: Eric Dumazet <[email protected]>
Tested-by: Denys Fedoryshchenko <[email protected]>
Tested-by: Pawel Staszewski <[email protected]>
Signed-off-by: Jarek Poplawski <[email protected]>
Signed-off-by: Andrej Ota <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
This commit is contained in:
Andrej Ota 2010-12-12 15:06:16 -08:00 • committed by David S. Miller
commit 2a27a03d3a

View file

@ -948,7 +948,7 @@ static int __pppoe_xmit(struct sock *sk, struct sk_buff *skb)
abort:
kfree_skb(skb);
return 0;
return 1;
}
/************************************************************************