Skip to content
Snippets Groups Projects
  1. Aug 20, 2020
    • Al Viro's avatar
      unify generic instances of csum_partial_copy_nocheck() · 6e41c585
      Al Viro authored
      
      quite a few architectures have the same csum_partial_copy_nocheck() -
      simply memcpy() the data and then return the csum of the copy.
      
      hexagon, parisc, ia64, s390, um: explicitly spelled out that way.
      
      arc, arm64, csky, h8300, m68k/nommu, microblaze, mips/GENERIC_CSUM, nds32,
      nios2, openrisc, riscv, unicore32: end up picking the same thing spelled
      out in lib/checksum.h (with varying amounts of perversions along the way).
      
      everybody else (alpha, arm, c6x, m68k/mmu, mips/!GENERIC_CSUM, powerpc,
      sh, sparc, x86, xtensa) have non-generic variants.  For all except c6x
      the declaration is in their asm/checksum.h.  c6x uses the wrapper
      from asm-generic/checksum.h that would normally lead to the lib/checksum.h
      instance, but in case of c6x we end up using an asm function from arch/c6x
      instead.
      
      Screw that mess - have architectures with private instances define
      _HAVE_ARCH_CSUM_AND_COPY in their asm/checksum.h and have the default
      one right in net/checksum.h conditional on _HAVE_ARCH_CSUM_AND_COPY
      *not* defined.
      
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      6e41c585
  2. Jul 21, 2020
  3. May 29, 2020
    • Al Viro's avatar
      take the dummy csum_and_copy_from_user() into net/checksum.h · 5904122c
      Al Viro authored
      
      now that can be done conveniently - all non-trivial cases have
      _HAVE_ARCH_COPY_AND_CSUM_FROM_USER defined, so the fallback in
      net/checksum.h is used only for dummy (copy_from_user, then
      csum_partial) implementation.  Allowing us to get rid of all
      dummy instances, both of csum_and_copy_from_user() and
      csum_partial_copy_from_user().
      
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      5904122c
  4. May 30, 2019
  5. Mar 14, 2016
    • Alexander Duyck's avatar
      ipv4: Update parameters for csum_tcpudp_magic to their original types · 01cfbad7
      Alexander Duyck authored
      
      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: default avatarAlexander Duyck <aduyck@mirantis.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      01cfbad7
  6. Jan 29, 2015
  7. Feb 11, 2013
  8. Mar 07, 2012
  9. Jul 07, 2011
  10. Nov 03, 2009
  11. Jun 19, 2009
    • Arnd Bergmann's avatar
      lib/checksum.c: fix endianess bug · 32a9ff9c
      Arnd Bergmann authored
      
      The new generic checksum code has a small dependency on endianess and
      worked only on big-endian systems. I could not find a nice efficient
      way to express this, so I added an #ifdef. Using
      'result += le16_to_cpu(*buff);' would have worked as well, but
      would be slightly less efficient on big-endian systems and IMHO
      would not be clearer.
      
      Also fix a bug that prevents this from working on 64-bit machines.
      If you have a 64-bit CPU and want to use the generic checksum
      code, you should probably do some more optimizations anyway, but
      at least the code should not break.
      
      Reported-by: default avatarMike Frysinger <vapier@gentoo.org>
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      32a9ff9c
  12. Jun 11, 2009
  13. May 21, 2009
    • Arnd Bergmann's avatar
      microblaze: clean up checksum.c · 732703af
      Arnd Bergmann authored
      
      This changes the function prototypes in the checksum code
      to have the usual prototypes, typically by turning int
      arguments into __wsum.
      
      Also change csum_partial_copy_from_user() to operate
      on the right address space and export ip_fast_csum,
      which is used in modular networking code.
      
      The new version is now sparse-clean including endianess
      checks.
      
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarMichal Simek <monstr@monstr.eu>
      732703af
  14. Mar 27, 2009
  15. Dec 03, 2006
  16. Apr 16, 2005
    • Linus Torvalds's avatar
      Linux-2.6.12-rc2 · 1da177e4
      Linus Torvalds authored
      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
Loading