OSDN Git Service

take the dummy csum_and_copy_from_user() into net/checksum.h
authorAl Viro <viro@zeniv.linux.org.uk>
Tue, 18 Feb 2020 19:26:32 +0000 (14:26 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Fri, 29 May 2020 20:11:50 +0000 (16:11 -0400)
now that can be done conveniently - all non-trivial cases have
_HAVE_ARCH_COPY_AND_CSUM_FROM_USER defined, so the fallback in
net/checksum.h is used only for dummy (copy_from_user, then
csum_partial) implementation.  Allowing us to get rid of all
dummy instances, both of csum_and_copy_from_user() and
csum_partial_copy_from_user().

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
arch/c6x/lib/checksum.c
arch/ia64/include/asm/checksum.h
arch/ia64/lib/csum_partial_copy.c
arch/nios2/include/asm/checksum.h
arch/parisc/include/asm/checksum.h
arch/parisc/lib/checksum.c
arch/s390/include/asm/checksum.h
arch/x86/um/asm/checksum.h
include/asm-generic/checksum.h
include/net/checksum.h
lib/checksum.c

index 4694084..335ca49 100644 (file)
@@ -4,28 +4,6 @@
 #include <linux/module.h>
 #include <net/checksum.h>
 
-#include <asm/byteorder.h>
-
-/*
- * copy from fs while checksumming, otherwise like csum_partial
- */
-__wsum
-csum_partial_copy_from_user(const void __user *src, void *dst, int len,
-                           __wsum sum, int *csum_err)
-{
-       int missing;
-
-       missing = __copy_from_user(dst, src, len);
-       if (missing) {
-               memset(dst + len - missing, 0, missing);
-               *csum_err = -EFAULT;
-       } else
-               *csum_err = 0;
-
-       return csum_partial(dst, len, sum);
-}
-EXPORT_SYMBOL(csum_partial_copy_from_user);
-
 /* These are from csum_64plus.S */
 EXPORT_SYMBOL(csum_partial);
 EXPORT_SYMBOL(csum_partial_copy);
index 279ea4d..2a1c646 100644 (file)
@@ -37,17 +37,6 @@ extern __wsum csum_tcpudp_nofold(__be32 saddr, __be32 daddr,
  */
 extern __wsum csum_partial(const void *buff, int len, __wsum sum);
 
-#define _HAVE_ARCH_COPY_AND_CSUM_FROM_USER
-/*
- * Same as csum_partial, but copies from src while it checksums.
- *
- * Here it is even more important to align src and dst on a 32-bit (or
- * even better 64-bit) boundary.
- */
-extern __wsum csum_and_copy_from_user(const void __user *src, void *dst,
-                                                int len, __wsum sum,
-                                                int *errp);
-
 extern __wsum csum_partial_copy_nocheck(const void *src, void *dst,
                                               int len, __wsum sum);
 
index ab59eb3..5d147a3 100644 (file)
@@ -104,24 +104,6 @@ out:
  * But it's very tricky to get right even in C.
  */
 __wsum
-csum_and_copy_from_user(const void __user *src, void *dst,
-                               int len, __wsum psum, int *errp)
-{
-       /* XXX Fixme
-        * for now we separate the copy from checksum for obvious
-        * alignment difficulties. Look at the Alpha code and you'll be
-        * scared.
-        */
-
-       if (copy_from_user(dst, src, len))
-               *errp = -EFAULT;
-
-       return csum_partial(dst, len, psum);
-}
-
-EXPORT_SYMBOL(csum_and_copy_from_user);
-
-__wsum
 csum_partial_copy_nocheck(const void *src, void *dst, int len, __wsum sum)
 {
        memcpy(dst, src, len);
index 703c5ee..ec39698 100644 (file)
@@ -14,8 +14,6 @@
 extern __wsum csum_partial(const void *buff, int len, __wsum sum);
 extern __wsum csum_partial_copy(const void *src, void *dst, int len,
                                __wsum sum);
-extern __wsum csum_partial_copy_from_user(const void __user *src, void *dst,
-                                       int len, __wsum sum, int *csum_err);
 #define csum_partial_copy_nocheck(src, dst, len, sum)  \
        csum_partial_copy((src), (dst), (len), (sum))
 
index 7c69ce9..fe8c63b 100644 (file)
@@ -26,14 +26,6 @@ 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_and_copy_from_user(const void __user *src,
-               void *dst, int len, __wsum sum, int *errp);
-
 /*
  *     Optimized for IP headers, which always checksum on 4 octet boundaries.
  *
index 4e47c2f..c6f1615 100644 (file)
@@ -123,17 +123,3 @@ __wsum csum_partial_copy_nocheck(const void *src, void *dst,
        return sum;
 }
 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_and_copy_from_user(const void __user *src,
-                                       void *dst, int len,
-                                       __wsum sum, int *err_ptr)
-{
-       if (copy_from_user(dst, src, len))
-               *err_ptr = -EFAULT;
-       return csum_partial(dst, len, sum);
-}
-EXPORT_SYMBOL(csum_and_copy_from_user);
index 91e376b..6d01c96 100644 (file)
@@ -39,25 +39,6 @@ csum_partial(const void *buff, int len, __wsum sum)
        return sum;
 }
 
-/*
- * the same as csum_partial_copy, but copies from user space.
- *
- * here even more important to align src and dst on a 32-bit (or even
- * better 64-bit) boundary
- *
- * Copy from userspace and compute checksum.
- */
-static inline __wsum
-csum_partial_copy_from_user(const void __user *src, void *dst,
-                                          int len, __wsum sum,
-                                          int *err_ptr)
-{
-       if (unlikely(copy_from_user(dst, src, len)))
-               *err_ptr = -EFAULT;
-       return csum_partial(dst, len, sum);
-}
-
-
 static inline __wsum
 csum_partial_copy_nocheck (const void *src, void *dst, int len, __wsum sum)
 {
index 2a56cac..ff6bba2 100644 (file)
@@ -36,26 +36,6 @@ __wsum csum_partial_copy_nocheck(const void *src, void *dst,
        return csum_partial(dst, len, sum);
 }
 
-/*
- * the same as csum_partial, but copies from src while it
- * checksums, and handles user-space pointer exceptions correctly, when needed.
- *
- * here even more important to align src and dst on a 32-bit (or even
- * better 64-bit) boundary
- */
-
-static __inline__
-__wsum csum_partial_copy_from_user(const void __user *src, void *dst,
-                                        int len, __wsum sum, int *err_ptr)
-{
-       if (copy_from_user(dst, src, len)) {
-               *err_ptr = -EFAULT;
-               return (__force __wsum)-1;
-       }
-
-       return csum_partial(dst, len, sum);
-}
-
 /**
  * csum_fold - Fold and invert a 32bit checksum.
  * sum: 32bit unfolded sum
index 34785c0..5a80f8e 100644 (file)
@@ -25,15 +25,6 @@ extern __wsum csum_partial(const void *buff, int len, __wsum sum);
  */
 extern __wsum csum_partial_copy(const void *src, void *dst, int len, __wsum sum);
 
-/*
- * the same as csum_partial_copy, but copies from user space.
- *
- * here even more important to align src and dst on a 32-bit (or even
- * better 64-bit) boundary
- */
-extern __wsum csum_partial_copy_from_user(const void __user *src, void *dst,
-                                       int len, __wsum sum, int *csum_err);
-
 #ifndef csum_partial_copy_nocheck
 #define csum_partial_copy_nocheck(src, dst, len, sum)  \
        csum_partial_copy((src), (dst), (len), (sum))
index 97bf488..5f9c73c 100644 (file)
@@ -26,13 +26,9 @@ static inline
 __wsum csum_and_copy_from_user (const void __user *src, void *dst,
                                      int len, __wsum sum, int *err_ptr)
 {
-       if (access_ok(src, len))
-               return csum_partial_copy_from_user(src, dst, len, sum, err_ptr);
-
-       if (len)
+       if (copy_from_user(dst, src, len))
                *err_ptr = -EFAULT;
-
-       return sum;
+       return csum_partial(dst, len, sum);
 }
 #endif
 
index de032ad..7ac65a0 100644 (file)
@@ -146,26 +146,6 @@ __sum16 ip_compute_csum(const void *buff, int len)
 EXPORT_SYMBOL(ip_compute_csum);
 
 /*
- * copy from fs while checksumming, otherwise like csum_partial
- */
-__wsum
-csum_partial_copy_from_user(const void __user *src, void *dst, int len,
-                                               __wsum sum, int *csum_err)
-{
-       int missing;
-
-       missing = __copy_from_user(dst, src, len);
-       if (missing) {
-               memset(dst + len - missing, 0, missing);
-               *csum_err = -EFAULT;
-       } else
-               *csum_err = 0;
-
-       return csum_partial(dst, len, sum);
-}
-EXPORT_SYMBOL(csum_partial_copy_from_user);
-
-/*
  * copy from ds while checksumming, otherwise like csum_partial
  */
 __wsum