sh32: convert to csum_and_copy_from_user()
authorAl Viro <viro@zeniv.linux.org.uk>
Tue, 18 Feb 2020 19:18:09 +0000 (14:18 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Fri, 29 May 2020 20:11:49 +0000 (16:11 -0400)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
arch/sh/include/asm/checksum_32.h

index 36b84cf..91571a4 100644 (file)
@@ -48,12 +48,17 @@ __wsum csum_partial_copy_nocheck(const void *src, void *dst,
        return csum_partial_copy_generic(src, dst, len, sum, NULL, NULL);
 }
 
+#define _HAVE_ARCH_COPY_AND_CSUM_FROM_USER
 static inline
-__wsum csum_partial_copy_from_user(const void __user *src, void *dst,
+__wsum csum_and_copy_from_user(const void __user *src, void *dst,
                                   int len, __wsum sum, int *err_ptr)
 {
-       return csum_partial_copy_generic((__force const void *)src, dst,
+       if (access_ok(src, len))
+               return csum_partial_copy_generic((__force const void *)src, dst,
                                        len, sum, err_ptr, NULL);
+       if (len)
+               *err_ptr = -EFAULT;
+       return sum;
 }
 
 /*