1. 15 7月, 2008 1 次提交
  2. 20 6月, 2008 1 次提交
    • W
      sctp: Validate Initiate Tag when handling ICMP message · 7115e632
      Wei Yongjun 提交于
      This patch add to validate initiate tag and chunk type if verification
      tag is 0 when handling ICMP message.
      
      RFC 4960, Appendix C. ICMP Handling
      
      ICMP6) An implementation MUST validate that the Verification Tag
      contained in the ICMP message matches the Verification Tag of the peer.
      If the Verification Tag is not 0 and does NOT match, discard the ICMP
      message.  If it is 0 and the ICMP message contains enough bytes to
      verify that the chunk type is an INIT chunk and that the Initiate Tag
      matches the tag of the peer, continue with ICMP7.  If the ICMP message
      is too short or the chunk type or the Initiate Tag does not match,
      silently discard the packet.
      Signed-off-by: NWei Yongjun <yjwei@cn.fujitsu.com>
      Signed-off-by: NVlad Yasevich <vladislav.yasevich@hp.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7115e632
  3. 10 4月, 2008 1 次提交
  4. 18 3月, 2008 1 次提交
  5. 06 3月, 2008 1 次提交
  6. 05 2月, 2008 1 次提交
  7. 29 1月, 2008 2 次提交
  8. 10 11月, 2007 1 次提交
  9. 11 10月, 2007 1 次提交
  10. 26 9月, 2007 1 次提交
  11. 01 8月, 2007 1 次提交
  12. 14 6月, 2007 2 次提交
  13. 26 4月, 2007 10 次提交
  14. 11 2月, 2007 1 次提交
  15. 03 12月, 2006 6 次提交
  16. 31 10月, 2006 2 次提交
  17. 30 9月, 2006 2 次提交
  18. 23 9月, 2006 2 次提交
  19. 18 6月, 2006 2 次提交
  20. 20 5月, 2006 1 次提交
    • V
      [SCTP]: A better solution to fix the race between sctp_peeloff() and · 61c9fed4
      Vladislav Yasevich 提交于
      sctp_rcv().
      
      The goal is to hold the ref on the association/endpoint throughout the
      state-machine process.  We accomplish like this:
      
        /* ref on the assoc/ep is taken during lookup */
      
        if owned_by_user(sk)
       	sctp_add_backlog(skb, sk);
        else
       	inqueue_push(skb, sk);
      
        /* drop the ref on the assoc/ep */
      
      However, in sctp_add_backlog() we take the ref on assoc/ep and hold it
      while the skb is on the backlog queue.  This allows us to get rid of the
      sock_hold/sock_put in the lookup routines.
      
      Now sctp_backlog_rcv() needs to account for potential association move.
      In the unlikely event that association moved, we need to retest if the
      new socket is locked by user.  If we don't this, we may have two packets
      racing up the stack toward the same socket and we can't deal with it.
      If the new socket is still locked, we'll just add the skb to its backlog
      continuing to hold the ref on the association.  This get's rid of the
      need to move packets from one backlog to another and it also safe in
      case new packets arrive on the same backlog queue.
      
      The last step, is to lock the new socket when we are moving the
      association to it.  This is needed in case any new packets arrive on
      the association when it moved.  We want these to go to the backlog since
      we would like to avoid the race between this new packet and a packet
      that may be sitting on the backlog queue of the old socket toward the
      same association.
      Signed-off-by: NVladislav Yasevich <vladislav.yasevich@hp.com>
      Signed-off-by: NSridhar Samudrala <sri@us.ibm.com>
      61c9fed4