.. | .. |
---|
| 1 | +/* SPDX-License-Identifier: GPL-2.0 */ |
---|
1 | 2 | #ifndef __ASM_SH_CHECKSUM_H |
---|
2 | 3 | #define __ASM_SH_CHECKSUM_H |
---|
3 | 4 | |
---|
4 | 5 | /* |
---|
5 | | - * This file is subject to the terms and conditions of the GNU General Public |
---|
6 | | - * License. See the file "COPYING" in the main directory of this archive |
---|
7 | | - * for more details. |
---|
8 | | - * |
---|
9 | 6 | * Copyright (C) 1999 by Kaz Kojima & Niibe Yutaka |
---|
10 | 7 | */ |
---|
11 | 8 | |
---|
.. | .. |
---|
33 | 30 | * better 64-bit) boundary |
---|
34 | 31 | */ |
---|
35 | 32 | |
---|
36 | | -asmlinkage __wsum csum_partial_copy_generic(const void *src, void *dst, |
---|
37 | | - int len, __wsum sum, |
---|
38 | | - int *src_err_ptr, int *dst_err_ptr); |
---|
| 33 | +asmlinkage __wsum csum_partial_copy_generic(const void *src, void *dst, int len); |
---|
39 | 34 | |
---|
| 35 | +#define _HAVE_ARCH_CSUM_AND_COPY |
---|
40 | 36 | /* |
---|
41 | 37 | * Note: when you get a NULL pointer exception here this means someone |
---|
42 | 38 | * passed in an incorrect kernel address to one of these functions. |
---|
.. | .. |
---|
45 | 41 | * access_ok(). |
---|
46 | 42 | */ |
---|
47 | 43 | static inline |
---|
48 | | -__wsum csum_partial_copy_nocheck(const void *src, void *dst, |
---|
49 | | - int len, __wsum sum) |
---|
| 44 | +__wsum csum_partial_copy_nocheck(const void *src, void *dst, int len) |
---|
50 | 45 | { |
---|
51 | | - return csum_partial_copy_generic(src, dst, len, sum, NULL, NULL); |
---|
| 46 | + return csum_partial_copy_generic(src, dst, len); |
---|
52 | 47 | } |
---|
53 | 48 | |
---|
| 49 | +#define _HAVE_ARCH_COPY_AND_CSUM_FROM_USER |
---|
54 | 50 | static inline |
---|
55 | | -__wsum csum_partial_copy_from_user(const void __user *src, void *dst, |
---|
56 | | - int len, __wsum sum, int *err_ptr) |
---|
| 51 | +__wsum csum_and_copy_from_user(const void __user *src, void *dst, int len) |
---|
57 | 52 | { |
---|
58 | | - return csum_partial_copy_generic((__force const void *)src, dst, |
---|
59 | | - len, sum, err_ptr, NULL); |
---|
| 53 | + if (!access_ok(src, len)) |
---|
| 54 | + return 0; |
---|
| 55 | + return csum_partial_copy_generic((__force const void *)src, dst, len); |
---|
60 | 56 | } |
---|
61 | 57 | |
---|
62 | 58 | /* |
---|
.. | .. |
---|
197 | 193 | #define HAVE_CSUM_COPY_USER |
---|
198 | 194 | static inline __wsum csum_and_copy_to_user(const void *src, |
---|
199 | 195 | void __user *dst, |
---|
200 | | - int len, __wsum sum, |
---|
201 | | - int *err_ptr) |
---|
| 196 | + int len) |
---|
202 | 197 | { |
---|
203 | | - if (access_ok(VERIFY_WRITE, dst, len)) |
---|
204 | | - return csum_partial_copy_generic((__force const void *)src, |
---|
205 | | - dst, len, sum, NULL, err_ptr); |
---|
206 | | - |
---|
207 | | - if (len) |
---|
208 | | - *err_ptr = -EFAULT; |
---|
209 | | - |
---|
210 | | - return (__force __wsum)-1; /* invalid checksum */ |
---|
| 198 | + if (!access_ok(dst, len)) |
---|
| 199 | + return 0; |
---|
| 200 | + return csum_partial_copy_generic((__force const void *)src, dst, len); |
---|
211 | 201 | } |
---|
212 | 202 | #endif /* __ASM_SH_CHECKSUM_H */ |
---|