forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-01-04 1543e317f1da31b75942316931e8f491a8920811
kernel/arch/mips/include/asm/checksum.h
....@@ -34,42 +34,17 @@
3434 */
3535 __wsum csum_partial(const void *buff, int len, __wsum sum);
3636
37
-__wsum __csum_partial_copy_kernel(const void *src, void *dst,
38
- int len, __wsum sum, int *err_ptr);
39
-
40
-__wsum __csum_partial_copy_from_user(const void *src, void *dst,
41
- int len, __wsum sum, int *err_ptr);
42
-__wsum __csum_partial_copy_to_user(const void *src, void *dst,
43
- int len, __wsum sum, int *err_ptr);
44
-/*
45
- * this is a new version of the above that records errors it finds in *errp,
46
- * but continues and zeros the rest of the buffer.
47
- */
48
-static inline
49
-__wsum csum_partial_copy_from_user(const void __user *src, void *dst, int len,
50
- __wsum sum, int *err_ptr)
51
-{
52
- might_fault();
53
- if (uaccess_kernel())
54
- return __csum_partial_copy_kernel((__force void *)src, dst,
55
- len, sum, err_ptr);
56
- else
57
- return __csum_partial_copy_from_user((__force void *)src, dst,
58
- len, sum, err_ptr);
59
-}
37
+__wsum __csum_partial_copy_from_user(const void __user *src, void *dst, int len);
38
+__wsum __csum_partial_copy_to_user(const void *src, void __user *dst, int len);
6039
6140 #define _HAVE_ARCH_COPY_AND_CSUM_FROM_USER
6241 static inline
63
-__wsum csum_and_copy_from_user(const void __user *src, void *dst,
64
- int len, __wsum sum, int *err_ptr)
42
+__wsum csum_and_copy_from_user(const void __user *src, void *dst, int len)
6543 {
66
- if (access_ok(VERIFY_READ, src, len))
67
- return csum_partial_copy_from_user(src, dst, len, sum,
68
- err_ptr);
69
- if (len)
70
- *err_ptr = -EFAULT;
71
-
72
- return sum;
44
+ might_fault();
45
+ if (!access_ok(src, len))
46
+ return 0;
47
+ return __csum_partial_copy_from_user(src, dst, len);
7348 }
7449
7550 /*
....@@ -77,33 +52,24 @@
7752 */
7853 #define HAVE_CSUM_COPY_USER
7954 static inline
80
-__wsum csum_and_copy_to_user(const void *src, void __user *dst, int len,
81
- __wsum sum, int *err_ptr)
55
+__wsum csum_and_copy_to_user(const void *src, void __user *dst, int len)
8256 {
8357 might_fault();
84
- if (access_ok(VERIFY_WRITE, dst, len)) {
85
- if (uaccess_kernel())
86
- return __csum_partial_copy_kernel(src,
87
- (__force void *)dst,
88
- len, sum, err_ptr);
89
- else
90
- return __csum_partial_copy_to_user(src,
91
- (__force void *)dst,
92
- len, sum, err_ptr);
93
- }
94
- if (len)
95
- *err_ptr = -EFAULT;
96
-
97
- return (__force __wsum)-1; /* invalid checksum */
58
+ if (!access_ok(dst, len))
59
+ return 0;
60
+ return __csum_partial_copy_to_user(src, dst, len);
9861 }
9962
10063 /*
10164 * the same as csum_partial, but copies from user space (but on MIPS
10265 * we have just one address space, so this is identical to the above)
10366 */
104
-__wsum csum_partial_copy_nocheck(const void *src, void *dst,
105
- int len, __wsum sum);
106
-#define csum_partial_copy_nocheck csum_partial_copy_nocheck
67
+#define _HAVE_ARCH_CSUM_AND_COPY
68
+__wsum __csum_partial_copy_nocheck(const void *src, void *dst, int len);
69
+static inline __wsum csum_partial_copy_nocheck(const void *src, void *dst, int len)
70
+{
71
+ return __csum_partial_copy_nocheck(src, dst, len);
72
+}
10773
10874 /*
10975 * Fold a partial checksum without adding pseudo headers
....@@ -113,9 +79,9 @@
11379 u32 sum = (__force u32)csum;
11480
11581 sum += (sum << 16);
116
- csum = (sum < csum);
82
+ csum = (__force __wsum)(sum < (__force u32)csum);
11783 sum >>= 16;
118
- sum += csum;
84
+ sum += (__force u32)csum;
11985
12086 return (__force __sum16)~sum;
12187 }