1. 14 3月, 2016 1 次提交
    • A
      ipv4: Update parameters for csum_tcpudp_magic to their original types · 01cfbad7
      Alexander Duyck 提交于
      This patch updates all instances of csum_tcpudp_magic and
      csum_tcpudp_nofold to reflect the types that are usually used as the source
      inputs.  For example the protocol field is populated based on nexthdr which
      is actually an unsigned 8 bit value.  The length is usually populated based
      on skb->len which is an unsigned integer.
      
      This addresses an issue in which the IPv6 function csum_ipv6_magic was
      generating a checksum using the full 32b of skb->len while
      csum_tcpudp_magic was only using the lower 16 bits.  As a result we could
      run into issues when attempting to adjust the checksum as there was no
      protocol agnostic way to update it.
      
      With this change the value is still truncated as many architectures use
      "(len + proto) << 8", however this truncation only occurs for values
      greater than 16776960 in length and as such is unlikely to occur as we stop
      the inner headers at ~64K in size.
      
      I did have to make a few minor changes in the arm, mn10300, nios2, and
      score versions of the function in order to support these changes as they
      were either using things such as an OR to combine the protocol and length,
      or were using ntohs to convert the length which would have truncated the
      value.
      
      I also updated a few spots in terms of whitespace and type differences for
      the addresses.  Most of this was just to make sure all of the definitions
      were in sync going forward.
      Signed-off-by: NAlexander Duyck <aduyck@mirantis.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      01cfbad7
  2. 01 4月, 2015 1 次提交
  3. 17 2月, 2015 1 次提交
  4. 13 1月, 2015 3 次提交
  5. 27 3月, 2014 3 次提交
  6. 01 2月, 2013 1 次提交
  7. 14 5月, 2009 1 次提交
  8. 11 10月, 2008 1 次提交
  9. 20 4月, 2007 1 次提交
    • D
      [MIPS] Fix wrong checksum for split TCP packets on 64-bit MIPS · 1d464c26
      Dave Johnson 提交于
      I've traced down an off-by-one TCP checksum calculation error under
      the following conditions:
      
      1) The TCP code needs to split a full-sized packet due to a reduced
         MSS (typically due to the addition of TCP options mid-stream like
         SACK).
         _AND_
      2) The checksum of the 2nd fragment is larger than the checksum of the
         original packet.  After subtraction this results in a checksum for
         the 1st fragment with bits 16..31 set to 1. (this is ok)
         _AND_
      3) The checksum of the 1st fragment's TCP header plus the previously
         32bit checksum of the 1st fragment DOES NOT cause a 32bit overflow
         when added together.  This results in a checksum of the TCP header
         plus TCP data that still has the upper 16 bits as 1's.
         _THEN_
      4) The TCP+data checksum is added to the checksum of the pseudo IP
         header with csum_tcpudp_nofold() incorrectly (the bug).
          
      The problem is the checksum of the TCP+data is passed to
      csum_tcpudp_nofold() as an 32bit unsigned value, however the assembly
      code acts on it as if it is a 64bit unsigned value.
      
      This causes an incorrect 32->64bit extension if the sum has bit 31
      set.  The resulting checksum is off by one.
          
      This problems is data and TCP header dependent due to #2 and #3
      above so it doesn't occur on every TCP packet split.
      Signed-off-by: NDave Johnson <djohnson+linux-mips@sw.starentnetworks.com>
      Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      1d464c26
  10. 25 1月, 2007 1 次提交
    • A
      [MIPS] Fix wrong checksum calculation on 64-bit MIPS · 66218da2
      Atsushi Nemoto 提交于
      The commit 8e3d8433 ([NET]: MIPS
      checksum annotations and cleanups) broke 64-bit MIPS.
      
      The problem is the commit replaces some unsigned long with __be32.  On
      64bit MIPS, a __be32 (i.e. unsigned int) value is represented as a
      sign-extented 32-bit value in a 64-bit argument register.  So the
      address 192.168.0.1 (0xc0a80001) is passed as 0xffffffffc0a80001 to
      csum_tcpudp_nofold() but the asm code in the function expects
      0x00000000c0a80001, therefore it returns a wrong checksum.  Explicit
      cast to unsigned long is needed to drop high 32bit.
      Signed-off-by: NAtsushi Nemoto <anemo@mba.ocn.ne.jp>
      Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      66218da2
  11. 09 1月, 2007 1 次提交
  12. 03 12月, 2006 1 次提交
  13. 26 4月, 2006 1 次提交
  14. 30 10月, 2005 3 次提交
  15. 05 9月, 2005 1 次提交
  16. 17 4月, 2005 1 次提交
    • L
      Linux-2.6.12-rc2 · 1da177e4
      Linus Torvalds 提交于
      Initial git repository build. I'm not bothering with the full history,
      even though we have it. We can create a separate "historical" git
      archive of that later if we want to, and in the meantime it's about
      3.2GB when imported into git - space that would just make the early
      git days unnecessarily complicated, when we don't have a lot of good
      infrastructure for it.
      
      Let it rip!
      1da177e4