1. 05 Jun, 2008 38 commits
  2. 04 Jun, 2008 2 commits
    • James Chapman's avatar
      l2tp: Fix possible oops if transmitting or receiving when tunnel goes down · 24b95685
      James Chapman authored
      Some problems have been experienced in the field which cause an oops
      in the pppol2tp driver if L2TP tunnels fail while passing data.
      
      The pppol2tp driver uses private data that is referenced via the
      sk->sk_user_data of its UDP and PPPoL2TP sockets. This patch makes
      sure that the driver uses sock_hold() when it holds a reference to the
      sk pointer. This affects its sendmsg(), recvmsg(), getname(),
      [gs]etsockopt() and ioctl() handlers.
      
      Tested by ISP where problem was seen. System has been up 10 days with
      no oops since running this patch. Without the patch, an oops would
      occur every 1-2 days.
      
      Signed-off-by: James Chapman <jchapman@katalix.com> 
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      24b95685
    • Octavian Purdila's avatar
      tcp: Fix for race due to temporary drop of the socket lock in skb_splice_bits. · 293ad604
      Octavian Purdila authored
      skb_splice_bits temporary drops the socket lock while iterating over
      the socket queue in order to break a reverse locking condition which
      happens with sendfile. This, however, opens a window of opportunity
      for tcp_collapse() to aggregate skbs and thus potentially free the
      current skb used in skb_splice_bits and tcp_read_sock.
      
      This patch fixes the problem by (re-)getting the same "logical skb"
      after the lock has been temporary dropped.
      
      Based on idea and initial patch from Evgeniy Polyakov.
      Signed-off-by: default avatarOctavian Purdila <opurdila@ixiacom.com>
      Acked-by: default avatarEvgeniy Polyakov <johnpol@2ka.mipt.ru>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      293ad604