1. 26 5月, 2013 1 次提交
    • E
      ip_tunnel: fix kernel panic with icmp_dest_unreach · a6222602
      Eric Dumazet 提交于
      Daniel Petre reported crashes in icmp_dst_unreach() with following call
      graph:
      
      #3 [ffff88003fc03938] __stack_chk_fail at ffffffff81037f77
      #4 [ffff88003fc03948] icmp_send at ffffffff814d5fec
      #5 [ffff88003fc03ae8] ipv4_link_failure at ffffffff814a1795
      #6 [ffff88003fc03af8] ipgre_tunnel_xmit at ffffffff814e7965
      #7 [ffff88003fc03b78] dev_hard_start_xmit at ffffffff8146e032
      #8 [ffff88003fc03bc8] sch_direct_xmit at ffffffff81487d66
      #9 [ffff88003fc03c08] __qdisc_run at ffffffff81487efd
      #10 [ffff88003fc03c48] dev_queue_xmit at ffffffff8146e5a7
      #11 [ffff88003fc03c88] ip_finish_output at ffffffff814ab596
      
      Daniel found a similar problem mentioned in
       http://lkml.indiana.edu/hypermail/linux/kernel/1007.0/00961.html
      
      And indeed this is the root cause : skb->cb[] contains data fooling IP
      stack.
      
      We must clear IPCB in ip_tunnel_xmit() sooner in case dst_link_failure()
      is called. Or else skb->cb[] might contain garbage from GSO segmentation
      layer.
      
      A similar fix was tested on linux-3.9, but gre code was refactored in
      linux-3.10. I'll send patches for stable kernels as well.
      
      Many thanks to Daniel for providing reports, patches and testing !
      Reported-by: NDaniel Petre <daniel.petre@rcs-rds.ro>
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a6222602
  2. 30 3月, 2013 1 次提交
  3. 27 3月, 2013 1 次提交
    • P
      GRE: Refactor GRE tunneling code. · c5441932
      Pravin B Shelar 提交于
      Following patch refactors GRE code into ip tunneling code and GRE
      specific code. Common tunneling code is moved to ip_tunnel module.
      ip_tunnel module is written as generic library which can be used
      by different tunneling implementations.
      
      ip_tunnel module contains following components:
       - packet xmit and rcv generic code. xmit flow looks like
         (gre_xmit/ipip_xmit)->ip_tunnel_xmit->ip_local_out.
       - hash table of all devices.
       - lookup for tunnel devices.
       - control plane operations like device create, destroy, ioctl, netlink
         operations code.
       - registration for tunneling modules, like gre, ipip etc.
       - define single pcpu_tstats dev->tstats.
       - struct tnl_ptk_info added to pass parsed tunnel packet parameters.
      
      ipip.h header is renamed to ip_tunnel.h
      Signed-off-by: NPravin B Shelar <pshelar@nicira.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c5441932