1. 29 1月, 2008 1 次提交
  2. 20 11月, 2007 1 次提交
  3. 24 10月, 2007 1 次提交
  4. 11 10月, 2007 13 次提交
  5. 29 9月, 2007 1 次提交
    • D
      [TCP]: Fix MD5 signature handling on big-endian. · f8ab18d2
      David S. Miller 提交于
      Based upon a report and initial patch by Peter Lieven.
      
      tcp4_md5sig_key and tcp6_md5sig_key need to start with
      the exact same members as tcp_md5sig_key.  Because they
      are both cast to that type by tcp_v{4,6}_md5_do_lookup().
      
      Unfortunately tcp{4,6}_md5sig_key use a u16 for the key
      length instead of a u8, which is what tcp_md5sig_key
      uses.  This just so happens to work by accident on
      little-endian, but on big-endian it doesn't.
      
      Instead of casting, just place tcp_md5sig_key as the first member of
      the address-family specific structures, adjust the access sites, and
      kill off the ugly casts.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f8ab18d2
  6. 03 8月, 2007 1 次提交
    • D
      [TCP]: Invoke tcp_sendmsg() directly, do not use inet_sendmsg(). · 3516ffb0
      David S. Miller 提交于
      As discovered by Evegniy Polyakov, if we try to sendmsg after
      a connection reset, we can do incredibly stupid things.
      
      The core issue is that inet_sendmsg() tries to autobind the
      socket, but we should never do that for TCP.  Instead we should
      just go straight into TCP's sendmsg() code which will do all
      of the necessary state and pending socket error checks.
      
      TCP's sendpage already directly vectors to tcp_sendpage(), so this
      merely brings sendmsg() in line with that.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      3516ffb0
  7. 31 7月, 2007 1 次提交
  8. 18 7月, 2007 1 次提交
  9. 31 5月, 2007 1 次提交
  10. 03 5月, 2007 1 次提交
  11. 30 4月, 2007 2 次提交
    • I
      [TCP] FRTO: RFC4138 allows Nagle override when new data must be sent · d551e454
      Ilpo Järvinen 提交于
      This is a corner case where less than MSS sized new data thingie
      is awaiting in the send queue. For F-RTO to work correctly, a
      new data segment must be sent at certain point or F-RTO cannot
      be used at all. RFC4138 allows overriding of Nagle at that
      point.
      
      Implementation uses frto_counter states 2 and 3 to distinguish
      when Nagle override is needed.
      Signed-off-by: NIlpo Järvinen <ilpo.jarvinen@helsinki.fi>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d551e454
    • I
      [TCP]: Catch skb with S+L bugs earlier · 34588b4c
      Ilpo Järvinen 提交于
      SACKED_ACKED and LOST are mutually exclusive with SACK, thus
      having their sum larger than packets_out is bug with SACK.
      Eventually these bugs trigger traps in the tcp_clean_rtx_queue
      with SACK but it's much more informative to do this here.
      
      Non-SACK TCP, however, could get more than packets_out duplicate
      ACKs which each increment sacked_out, so it makes sense to do
      this kind of limitting for non-SACK TCP but not for SACK enabled
      one. Perhaps the author had the opposite in mind but did the
      logic accidently wrong way around? Anyway, the sacked_out
      incrementer code for non-SACK already deals this issue before
      calling sync_left_out so this trapping can be done
      unconditionally.
      Signed-off-by: NIlpo Järvinen <ilpo.jarvinen@helsinki.fi>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      34588b4c
  12. 26 4月, 2007 11 次提交
  13. 09 2月, 2007 1 次提交
  14. 05 1月, 2007 1 次提交
  15. 23 12月, 2006 1 次提交
    • G
      [TCP]: Fix ambiguity in the `before' relation. · 9a036b9c
      Gerrit Renker 提交于
      While looking at DCCP sequence numbers, I stumbled over a problem with
      the following definition of before in tcp.h:
      
      static inline int before(__u32 seq1, __u32 seq2)
      {
              return (__s32)(seq1-seq2) < 0;
      }
      
      Problem: This definition suffers from an an ambiguity, i.e. always
      
                 before(a, (a + 2^31) % 2^32)) = 1
                 before((a + 2^31) % 2^32), a) = 1
      
               In text: when the difference between a and b amounts to 2^31,
               a is always considered `before' b, the function can not decide.
               The reason is that implicitly 0 is `before' 1 ... 2^31-1 ... 2^31
      
      Solution: There is a simple fix, by defining before in such a way that
                0 is no longer `before' 2^31, i.e. 0 `before' 1 ... 2^31-1
                By not using the middle between 0 and 2^32, before can be made
                unambiguous.
                This is achieved by testing whether seq2-seq1 > 0 (using signed
                32-bit arithmetic).
      
      I attach a patch to codify this. Also the `after' relation is basically
      a redefinition of `before', it is now defined as a macro after before.
      Signed-off-by: NGerrit Renker <gerrit@erg.abdn.ac.uk>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9a036b9c
  16. 03 12月, 2006 2 次提交