Ben McKeegan 82b3cc1a2f ppp: fix BUG on non-linear SKB (multilink receive)
PPP does not correctly call pskb_may_pull() on all necessary receive paths
before reading the PPP protocol, thus causing PPP to report seemingly
random 'unsupported protocols' and eventually trigger BUG_ON(skb->len <
skb->data_len) in skb_pull_rcsum() when receiving multilink protocol in
non-linear skbs.

ppp_receive_nonmp_frame() does not call pskb_may_pull() before reading the
protocol number.  For the non-mp receive path this is not a problem, as
this check is done in ppp_receive_frame().  For the mp receive path,
ppp_mp_reconstruct() usually copies the data into a new linear skb.
However, in the case where the frame is made up of a single mp fragment,
the mp header is pulled and the existing skb used.  This skb was then
passed to ppp_receive_nonmp_frame() without checking if the encapsulated
protocol header could safely be read.

Signed-off-by: Ben McKeegan <ben@netservers.co.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-11-16 23:51:34 -08:00
..
2009-09-22 14:00:10 -07:00
2009-09-26 20:16:05 -07:00
2009-10-01 14:48:25 -07:00
2009-09-16 00:00:21 -07:00
2009-10-13 03:16:53 -07:00
2009-09-30 20:11:11 -07:00
2009-09-01 01:13:50 -07:00
2009-09-01 01:13:50 -07:00
2009-09-01 01:13:50 -07:00
2009-09-01 01:13:50 -07:00
2009-09-01 01:13:50 -07:00
2009-09-01 01:13:50 -07:00
2009-09-01 01:13:50 -07:00
2009-09-01 01:13:50 -07:00
2008-11-25 18:25:32 -08:00
2009-04-04 16:51:14 -07:00
2009-08-12 23:03:00 -07:00
2009-08-12 22:53:28 -07:00
2009-08-12 23:03:01 -07:00
2009-08-12 23:03:01 -07:00
2009-11-06 20:26:09 -08:00
2008-09-22 19:27:10 -07:00
2009-08-15 18:50:44 -07:00
2009-10-24 06:53:07 -07:00
2009-09-23 07:39:43 -07:00
2008-11-25 18:23:59 -08:00
2009-10-18 21:24:16 -07:00
2009-10-20 18:51:37 -07:00
2009-11-15 21:17:02 -08:00
2009-02-04 16:43:44 -08:00
2009-02-26 21:02:19 -08:00
2008-11-25 18:24:57 -08:00
2009-04-16 02:20:08 -07:00
2009-09-07 01:56:52 -07:00
2009-01-06 10:47:44 -08:00
2009-10-02 09:55:19 -07:00
2009-07-06 13:05:13 -07:00
2009-10-14 20:38:58 -07:00
2009-10-20 19:11:06 -07:00
2008-11-25 18:24:38 -08:00
2009-04-16 02:20:16 -07:00
2009-09-03 20:02:13 -07:00
2009-04-16 02:20:21 -07:00
2009-09-21 15:14:58 +02:00
2009-07-16 09:14:23 -07:00
2009-10-26 16:23:20 -07:00
2008-11-10 15:11:56 -05:00
2009-11-15 21:14:59 -08:00
2009-04-29 17:32:34 -07:00
2009-08-02 12:20:40 -07:00
2009-10-26 17:19:44 -07:00
2009-10-01 15:14:54 -07:00
2009-10-01 15:14:54 -07:00
2009-10-30 12:25:16 -07:00
2009-10-01 15:14:55 -07:00
2009-09-19 13:13:17 -07:00
2009-09-15 09:37:12 -07:00
2009-03-27 00:46:48 -07:00
2008-04-16 20:06:50 -04:00
2008-11-25 18:25:49 -08:00
2008-08-29 02:13:33 -07:00
2008-08-29 02:14:29 -07:00
2008-08-29 02:14:43 -07:00
2009-10-07 03:37:39 -07:00
2009-10-07 03:37:39 -07:00
2008-05-30 22:18:02 -04:00
2009-01-11 00:06:36 -08:00