Loading arch/sparc/Kconfig +1 −0 Original line number Diff line number Diff line Loading @@ -43,6 +43,7 @@ config SPARC select OLD_SIGSUSPEND select ARCH_HAS_SG_CHAIN select CPU_NO_EFFICIENT_FFS select HAVE_ARCH_HARDENED_USERCOPY config SPARC32 def_bool !64BIT Loading arch/sparc/include/asm/uaccess_32.h +10 −4 Original line number Diff line number Diff line Loading @@ -248,22 +248,28 @@ unsigned long __copy_user(void __user *to, const void __user *from, unsigned lon static inline unsigned long copy_to_user(void __user *to, const void *from, unsigned long n) { if (n && __access_ok((unsigned long) to, n)) if (n && __access_ok((unsigned long) to, n)) { if (!__builtin_constant_p(n)) check_object_size(from, n, true); return __copy_user(to, (__force void __user *) from, n); else } else return n; } static inline unsigned long __copy_to_user(void __user *to, const void *from, unsigned long n) { if (!__builtin_constant_p(n)) check_object_size(from, n, true); return __copy_user(to, (__force void __user *) from, n); } static inline unsigned long copy_from_user(void *to, const void __user *from, unsigned long n) { if (n && __access_ok((unsigned long) from, n)) if (n && __access_ok((unsigned long) from, n)) { if (!__builtin_constant_p(n)) check_object_size(to, n, false); return __copy_user((__force void __user *) to, from, n); else } else return n; } Loading arch/sparc/include/asm/uaccess_64.h +9 −2 Original line number Diff line number Diff line Loading @@ -210,8 +210,12 @@ unsigned long copy_from_user_fixup(void *to, const void __user *from, static inline unsigned long __must_check copy_from_user(void *to, const void __user *from, unsigned long size) { unsigned long ret = ___copy_from_user(to, from, size); unsigned long ret; if (!__builtin_constant_p(size)) check_object_size(to, size, false); ret = ___copy_from_user(to, from, size); if (unlikely(ret)) ret = copy_from_user_fixup(to, from, size); Loading @@ -227,8 +231,11 @@ unsigned long copy_to_user_fixup(void __user *to, const void *from, static inline unsigned long __must_check copy_to_user(void __user *to, const void *from, unsigned long size) { unsigned long ret = ___copy_to_user(to, from, size); unsigned long ret; if (!__builtin_constant_p(size)) check_object_size(from, size, true); ret = ___copy_to_user(to, from, size); if (unlikely(ret)) ret = copy_to_user_fixup(to, from, size); return ret; Loading Loading
arch/sparc/Kconfig +1 −0 Original line number Diff line number Diff line Loading @@ -43,6 +43,7 @@ config SPARC select OLD_SIGSUSPEND select ARCH_HAS_SG_CHAIN select CPU_NO_EFFICIENT_FFS select HAVE_ARCH_HARDENED_USERCOPY config SPARC32 def_bool !64BIT Loading
arch/sparc/include/asm/uaccess_32.h +10 −4 Original line number Diff line number Diff line Loading @@ -248,22 +248,28 @@ unsigned long __copy_user(void __user *to, const void __user *from, unsigned lon static inline unsigned long copy_to_user(void __user *to, const void *from, unsigned long n) { if (n && __access_ok((unsigned long) to, n)) if (n && __access_ok((unsigned long) to, n)) { if (!__builtin_constant_p(n)) check_object_size(from, n, true); return __copy_user(to, (__force void __user *) from, n); else } else return n; } static inline unsigned long __copy_to_user(void __user *to, const void *from, unsigned long n) { if (!__builtin_constant_p(n)) check_object_size(from, n, true); return __copy_user(to, (__force void __user *) from, n); } static inline unsigned long copy_from_user(void *to, const void __user *from, unsigned long n) { if (n && __access_ok((unsigned long) from, n)) if (n && __access_ok((unsigned long) from, n)) { if (!__builtin_constant_p(n)) check_object_size(to, n, false); return __copy_user((__force void __user *) to, from, n); else } else return n; } Loading
arch/sparc/include/asm/uaccess_64.h +9 −2 Original line number Diff line number Diff line Loading @@ -210,8 +210,12 @@ unsigned long copy_from_user_fixup(void *to, const void __user *from, static inline unsigned long __must_check copy_from_user(void *to, const void __user *from, unsigned long size) { unsigned long ret = ___copy_from_user(to, from, size); unsigned long ret; if (!__builtin_constant_p(size)) check_object_size(to, size, false); ret = ___copy_from_user(to, from, size); if (unlikely(ret)) ret = copy_from_user_fixup(to, from, size); Loading @@ -227,8 +231,11 @@ unsigned long copy_to_user_fixup(void __user *to, const void *from, static inline unsigned long __must_check copy_to_user(void __user *to, const void *from, unsigned long size) { unsigned long ret = ___copy_to_user(to, from, size); unsigned long ret; if (!__builtin_constant_p(size)) check_object_size(from, size, true); ret = ___copy_to_user(to, from, size); if (unlikely(ret)) ret = copy_to_user_fixup(to, from, size); return ret; Loading