aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJulien Thierry <julien.thierry@arm.com>2018-09-11 05:15:12 -0400
committerRussell King <rmk+kernel@armlinux.org.uk>2018-10-05 05:51:15 -0400
commita1d09e074250fad24f1b993f327b18cc6812eb7a (patch)
tree92904d2fbb862da96ffdfa670f7ab1556239553f
parentafaf6838f4bc896a711180b702b388b8cfa638fc (diff)
ARM: 8797/1: spectre-v1.1: harden __copy_to_user
Sanitize user pointer given to __copy_to_user, both for standard version and memcopy version of the user accessor. Signed-off-by: Julien Thierry <julien.thierry@arm.com> Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
-rw-r--r--arch/arm/lib/copy_to_user.S6
-rw-r--r--arch/arm/lib/uaccess_with_memcpy.c3
2 files changed, 7 insertions, 2 deletions
diff --git a/arch/arm/lib/copy_to_user.S b/arch/arm/lib/copy_to_user.S
index caf5019d8161..970abe521197 100644
--- a/arch/arm/lib/copy_to_user.S
+++ b/arch/arm/lib/copy_to_user.S
@@ -94,6 +94,11 @@
94 94
95ENTRY(__copy_to_user_std) 95ENTRY(__copy_to_user_std)
96WEAK(arm_copy_to_user) 96WEAK(arm_copy_to_user)
97#ifdef CONFIG_CPU_SPECTRE
98 get_thread_info r3
99 ldr r3, [r3, #TI_ADDR_LIMIT]
100 uaccess_mask_range_ptr r0, r2, r3, ip
101#endif
97 102
98#include "copy_template.S" 103#include "copy_template.S"
99 104
@@ -108,4 +113,3 @@ ENDPROC(__copy_to_user_std)
108 rsb r0, r0, r2 113 rsb r0, r0, r2
109 copy_abort_end 114 copy_abort_end
110 .popsection 115 .popsection
111
diff --git a/arch/arm/lib/uaccess_with_memcpy.c b/arch/arm/lib/uaccess_with_memcpy.c
index 9b4ed1728616..73dc7360cbdd 100644
--- a/arch/arm/lib/uaccess_with_memcpy.c
+++ b/arch/arm/lib/uaccess_with_memcpy.c
@@ -152,7 +152,8 @@ arm_copy_to_user(void __user *to, const void *from, unsigned long n)
152 n = __copy_to_user_std(to, from, n); 152 n = __copy_to_user_std(to, from, n);
153 uaccess_restore(ua_flags); 153 uaccess_restore(ua_flags);
154 } else { 154 } else {
155 n = __copy_to_user_memcpy(to, from, n); 155 n = __copy_to_user_memcpy(uaccess_mask_range_ptr(to, n),
156 from, n);
156 } 157 }
157 return n; 158 return n;
158} 159}