From: Al Viro Date: Tue, 18 Feb 2020 18:01:02 +0000 (-0500) Subject: parisc: turn csum_partial_copy_from_user() into csum_and_copy_from_user() X-Git-Tag: v5.10.7~2478^2~8 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=77a8710ba7ef7ffcb71f0618bddf78c1b04f01d3;p=platform%2Fkernel%2Flinux-rpi.git parisc: turn csum_partial_copy_from_user() into csum_and_copy_from_user() Already has the right semantics. Incidentally. failing copy_from_user() zeroes the tail of destination - no need to repeat that manually Signed-off-by: Al Viro --- diff --git a/arch/parisc/include/asm/checksum.h b/arch/parisc/include/asm/checksum.h index c1c2281..7c69ce9 100644 --- a/arch/parisc/include/asm/checksum.h +++ b/arch/parisc/include/asm/checksum.h @@ -26,11 +26,12 @@ extern __wsum csum_partial(const void *, int, __wsum); */ extern __wsum csum_partial_copy_nocheck(const void *, void *, int, __wsum); +#define _HAVE_ARCH_COPY_AND_CSUM_FROM_USER /* * this is a new version of the above that records errors it finds in *errp, * but continues and zeros the rest of the buffer. */ -extern __wsum csum_partial_copy_from_user(const void __user *src, +extern __wsum csum_and_copy_from_user(const void __user *src, void *dst, int len, __wsum sum, int *errp); /* diff --git a/arch/parisc/lib/checksum.c b/arch/parisc/lib/checksum.c index 256322c..4e47c2f 100644 --- a/arch/parisc/lib/checksum.c +++ b/arch/parisc/lib/checksum.c @@ -128,18 +128,12 @@ EXPORT_SYMBOL(csum_partial_copy_nocheck); * Copy from userspace and compute checksum. If we catch an exception * then zero the rest of the buffer. */ -__wsum csum_partial_copy_from_user(const void __user *src, +__wsum csum_and_copy_from_user(const void __user *src, void *dst, int len, __wsum sum, int *err_ptr) { - int missing; - - missing = copy_from_user(dst, src, len); - if (missing) { - memset(dst + len - missing, 0, missing); + if (copy_from_user(dst, src, len)) *err_ptr = -EFAULT; - } - return csum_partial(dst, len, sum); } -EXPORT_SYMBOL(csum_partial_copy_from_user); +EXPORT_SYMBOL(csum_and_copy_from_user);