.. | .. |
---|
35 | 35 | return csum_fold(sum); |
---|
36 | 36 | } |
---|
37 | 37 | |
---|
38 | | -/* |
---|
39 | | - * Copy and checksum to user |
---|
40 | | - */ |
---|
41 | | -#define HAVE_CSUM_COPY_USER |
---|
42 | | -static __inline__ __wsum csum_and_copy_to_user(const void *src, |
---|
43 | | - void __user *dst, |
---|
44 | | - int len, __wsum sum, int *err_ptr) |
---|
45 | | -{ |
---|
46 | | - if (access_ok(VERIFY_WRITE, dst, len)) { |
---|
47 | | - if (copy_to_user(dst, src, len)) { |
---|
48 | | - *err_ptr = -EFAULT; |
---|
49 | | - return (__force __wsum)-1; |
---|
50 | | - } |
---|
51 | | - |
---|
52 | | - return csum_partial(src, len, sum); |
---|
53 | | - } |
---|
54 | | - |
---|
55 | | - if (len) |
---|
56 | | - *err_ptr = -EFAULT; |
---|
57 | | - |
---|
58 | | - return (__force __wsum)-1; /* invalid checksum */ |
---|
59 | | -} |
---|
60 | | - |
---|
61 | 38 | #endif |
---|