hc
2024-10-12 a5969cabbb4660eab42b6ef0412cbbd1200cf14d
kernel/arch/x86/include/asm/checksum_32.h
....@@ -27,9 +27,7 @@
2727 * better 64-bit) boundary
2828 */
2929
30
-asmlinkage __wsum csum_partial_copy_generic(const void *src, void *dst,
31
- int len, __wsum sum,
32
- int *src_err_ptr, int *dst_err_ptr);
30
+asmlinkage __wsum csum_partial_copy_generic(const void *src, void *dst, int len);
3331
3432 /*
3533 * Note: when you get a NULL pointer exception here this means someone
....@@ -38,24 +36,21 @@
3836 * If you use these functions directly please don't forget the
3937 * access_ok().
4038 */
41
-static inline __wsum csum_partial_copy_nocheck(const void *src, void *dst,
42
- int len, __wsum sum)
39
+static inline __wsum csum_partial_copy_nocheck(const void *src, void *dst, int len)
4340 {
44
- return csum_partial_copy_generic(src, dst, len, sum, NULL, NULL);
41
+ return csum_partial_copy_generic(src, dst, len);
4542 }
4643
47
-static inline __wsum csum_partial_copy_from_user(const void __user *src,
48
- void *dst,
49
- int len, __wsum sum,
50
- int *err_ptr)
44
+static inline __wsum csum_and_copy_from_user(const void __user *src,
45
+ void *dst, int len)
5146 {
5247 __wsum ret;
5348
5449 might_sleep();
55
- stac();
56
- ret = csum_partial_copy_generic((__force void *)src, dst,
57
- len, sum, err_ptr, NULL);
58
- clac();
50
+ if (!user_access_begin(src, len))
51
+ return 0;
52
+ ret = csum_partial_copy_generic((__force void *)src, dst, len);
53
+ user_access_end();
5954
6055 return ret;
6156 }
....@@ -173,27 +168,19 @@
173168 /*
174169 * Copy and checksum to user
175170 */
176
-#define HAVE_CSUM_COPY_USER
177171 static inline __wsum csum_and_copy_to_user(const void *src,
178172 void __user *dst,
179
- int len, __wsum sum,
180
- int *err_ptr)
173
+ int len)
181174 {
182175 __wsum ret;
183176
184177 might_sleep();
185
- if (access_ok(VERIFY_WRITE, dst, len)) {
186
- stac();
187
- ret = csum_partial_copy_generic(src, (__force void *)dst,
188
- len, sum, NULL, err_ptr);
189
- clac();
190
- return ret;
191
- }
178
+ if (!user_access_begin(dst, len))
179
+ return 0;
192180
193
- if (len)
194
- *err_ptr = -EFAULT;
195
-
196
- return (__force __wsum)-1; /* invalid checksum */
181
+ ret = csum_partial_copy_generic(src, (__force void *)dst, len);
182
+ user_access_end();
183
+ return ret;
197184 }
198185
199186 #endif /* _ASM_X86_CHECKSUM_32_H */