checksum.c 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  1. #include "asm/uaccess.h"
  2. #include "linux/errno.h"
  3. #include "linux/module.h"
  4. unsigned int arch_csum_partial(const unsigned char *buff, int len, int sum);
  5. unsigned int csum_partial(unsigned char *buff, int len, int sum)
  6. {
  7. return arch_csum_partial(buff, len, sum);
  8. }
  9. EXPORT_SYMBOL(csum_partial);
  10. unsigned int csum_partial_copy_to(const unsigned char *src,
  11. unsigned char __user *dst, int len, int sum,
  12. int *err_ptr)
  13. {
  14. if(copy_to_user(dst, src, len)){
  15. *err_ptr = -EFAULT;
  16. return(-1);
  17. }
  18. return(arch_csum_partial(src, len, sum));
  19. }
  20. unsigned int csum_partial_copy_from(const unsigned char __user *src,
  21. unsigned char *dst, int len, int sum,
  22. int *err_ptr)
  23. {
  24. if(copy_from_user(dst, src, len)){
  25. *err_ptr = -EFAULT;
  26. return(-1);
  27. }
  28. return arch_csum_partial(dst, len, sum);
  29. }