• E
    pptp: pptp_rcv_core() misses pskb_may_pull() call · 4ea2739e
    Eric Dumazet 提交于
    e1000e uses paged frags, so any layer incorrectly pulling bytes from skb
    can trigger a BUG in skb_pull()
    
    [951.142737]  [<ffffffff813d2f36>] skb_pull+0x15/0x17
    [951.142737]  [<ffffffffa0286824>] pptp_rcv_core+0x126/0x19a [pptp]
    [951.152725]  [<ffffffff813d17c4>] sk_receive_skb+0x69/0x105
    [951.163558]  [<ffffffffa0286993>] pptp_rcv+0xc8/0xdc [pptp]
    [951.165092]  [<ffffffffa02800a3>] gre_rcv+0x62/0x75 [gre]
    [951.165092]  [<ffffffff81410784>] ip_local_deliver_finish+0x150/0x1c1
    [951.177599]  [<ffffffff81410634>] ? ip_local_deliver_finish+0x0/0x1c1
    [951.177599]  [<ffffffff81410846>] NF_HOOK.clone.7+0x51/0x58
    [951.177599]  [<ffffffff81410996>] ip_local_deliver+0x51/0x55
    [951.177599]  [<ffffffff814105b9>] ip_rcv_finish+0x31a/0x33e
    [951.177599]  [<ffffffff8141029f>] ? ip_rcv_finish+0x0/0x33e
    [951.204898]  [<ffffffff81410846>] NF_HOOK.clone.7+0x51/0x58
    [951.214651]  [<ffffffff81410bb5>] ip_rcv+0x21b/0x246
    
    pptp_rcv_core() is a nice example of a function assuming everything it
    needs is available in skb head.
    Reported-by: NBradley Peterson <despite@gmail.com>
    Signed-off-by: NEric Dumazet <eric.dumazet@gmail.com>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    4ea2739e
pptp.c 16.6 KB