linux/arch/c6x/lib/checksum.c
<<
>>
Prefs
   1/*
   2 *              This program is free software; you can redistribute it and/or
   3 *              modify it under the terms of the GNU General Public License
   4 *              as published by the Free Software Foundation; either version
   5 *              2 of the License, or (at your option) any later version.
   6 */
   7#include <linux/module.h>
   8#include <net/checksum.h>
   9
  10#include <asm/byteorder.h>
  11
  12/*
  13 * copy from fs while checksumming, otherwise like csum_partial
  14 */
  15__wsum
  16csum_partial_copy_from_user(const void __user *src, void *dst, int len,
  17                            __wsum sum, int *csum_err)
  18{
  19        int missing;
  20
  21        missing = __copy_from_user(dst, src, len);
  22        if (missing) {
  23                memset(dst + len - missing, 0, missing);
  24                *csum_err = -EFAULT;
  25        } else
  26                *csum_err = 0;
  27
  28        return csum_partial(dst, len, sum);
  29}
  30EXPORT_SYMBOL(csum_partial_copy_from_user);
  31
  32/* These are from csum_64plus.S */
  33EXPORT_SYMBOL(csum_partial);
  34EXPORT_SYMBOL(csum_partial_copy);
  35EXPORT_SYMBOL(ip_compute_csum);
  36EXPORT_SYMBOL(ip_fast_csum);
  37