aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/lib
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2015-08-19 06:02:28 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2015-08-25 11:14:43 -0400
commit3fba7e23f754a9a6e639b640fa2a393712ffe1b8 (patch)
treec9a472b59b67700bdde134a4dc707ae607837faa /arch/arm/lib
parent08446b129bbde34665c423d882f857a45b8c3aed (diff)
ARM: uaccess: provide uaccess_save_and_enable() and uaccess_restore()
Provide uaccess_save_and_enable() and uaccess_restore() to permit control of userspace visibility to the kernel, and hook these into the appropriate places in the kernel where we need to access userspace. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/lib')
-rw-r--r--arch/arm/lib/clear_user.S6
-rw-r--r--arch/arm/lib/copy_from_user.S6
-rw-r--r--arch/arm/lib/copy_to_user.S6
-rw-r--r--arch/arm/lib/uaccess_with_memcpy.c4
4 files changed, 11 insertions, 11 deletions
diff --git a/arch/arm/lib/clear_user.S b/arch/arm/lib/clear_user.S
index 1710fd7db2d5..970d6c043774 100644
--- a/arch/arm/lib/clear_user.S
+++ b/arch/arm/lib/clear_user.S
@@ -12,14 +12,14 @@
12 12
13 .text 13 .text
14 14
15/* Prototype: int __clear_user(void *addr, size_t sz) 15/* Prototype: unsigned long arm_clear_user(void *addr, size_t sz)
16 * Purpose : clear some user memory 16 * Purpose : clear some user memory
17 * Params : addr - user memory address to clear 17 * Params : addr - user memory address to clear
18 * : sz - number of bytes to clear 18 * : sz - number of bytes to clear
19 * Returns : number of bytes NOT cleared 19 * Returns : number of bytes NOT cleared
20 */ 20 */
21ENTRY(__clear_user_std) 21ENTRY(__clear_user_std)
22WEAK(__clear_user) 22WEAK(arm_clear_user)
23 stmfd sp!, {r1, lr} 23 stmfd sp!, {r1, lr}
24 mov r2, #0 24 mov r2, #0
25 cmp r1, #4 25 cmp r1, #4
@@ -44,7 +44,7 @@ WEAK(__clear_user)
44USER( strnebt r2, [r0]) 44USER( strnebt r2, [r0])
45 mov r0, #0 45 mov r0, #0
46 ldmfd sp!, {r1, pc} 46 ldmfd sp!, {r1, pc}
47ENDPROC(__clear_user) 47ENDPROC(arm_clear_user)
48ENDPROC(__clear_user_std) 48ENDPROC(__clear_user_std)
49 49
50 .pushsection .text.fixup,"ax" 50 .pushsection .text.fixup,"ax"
diff --git a/arch/arm/lib/copy_from_user.S b/arch/arm/lib/copy_from_user.S
index 7a235b9952be..1512bebfbf1b 100644
--- a/arch/arm/lib/copy_from_user.S
+++ b/arch/arm/lib/copy_from_user.S
@@ -17,7 +17,7 @@
17/* 17/*
18 * Prototype: 18 * Prototype:
19 * 19 *
20 * size_t __copy_from_user(void *to, const void *from, size_t n) 20 * size_t arm_copy_from_user(void *to, const void *from, size_t n)
21 * 21 *
22 * Purpose: 22 * Purpose:
23 * 23 *
@@ -89,11 +89,11 @@
89 89
90 .text 90 .text
91 91
92ENTRY(__copy_from_user) 92ENTRY(arm_copy_from_user)
93 93
94#include "copy_template.S" 94#include "copy_template.S"
95 95
96ENDPROC(__copy_from_user) 96ENDPROC(arm_copy_from_user)
97 97
98 .pushsection .fixup,"ax" 98 .pushsection .fixup,"ax"
99 .align 0 99 .align 0
diff --git a/arch/arm/lib/copy_to_user.S b/arch/arm/lib/copy_to_user.S
index 9648b0675a3e..caf5019d8161 100644
--- a/arch/arm/lib/copy_to_user.S
+++ b/arch/arm/lib/copy_to_user.S
@@ -17,7 +17,7 @@
17/* 17/*
18 * Prototype: 18 * Prototype:
19 * 19 *
20 * size_t __copy_to_user(void *to, const void *from, size_t n) 20 * size_t arm_copy_to_user(void *to, const void *from, size_t n)
21 * 21 *
22 * Purpose: 22 * Purpose:
23 * 23 *
@@ -93,11 +93,11 @@
93 .text 93 .text
94 94
95ENTRY(__copy_to_user_std) 95ENTRY(__copy_to_user_std)
96WEAK(__copy_to_user) 96WEAK(arm_copy_to_user)
97 97
98#include "copy_template.S" 98#include "copy_template.S"
99 99
100ENDPROC(__copy_to_user) 100ENDPROC(arm_copy_to_user)
101ENDPROC(__copy_to_user_std) 101ENDPROC(__copy_to_user_std)
102 102
103 .pushsection .text.fixup,"ax" 103 .pushsection .text.fixup,"ax"
diff --git a/arch/arm/lib/uaccess_with_memcpy.c b/arch/arm/lib/uaccess_with_memcpy.c
index 3e58d710013c..77f020e75ccd 100644
--- a/arch/arm/lib/uaccess_with_memcpy.c
+++ b/arch/arm/lib/uaccess_with_memcpy.c
@@ -136,7 +136,7 @@ out:
136} 136}
137 137
138unsigned long 138unsigned long
139__copy_to_user(void __user *to, const void *from, unsigned long n) 139arm_copy_to_user(void __user *to, const void *from, unsigned long n)
140{ 140{
141 /* 141 /*
142 * This test is stubbed out of the main function above to keep 142 * This test is stubbed out of the main function above to keep
@@ -190,7 +190,7 @@ out:
190 return n; 190 return n;
191} 191}
192 192
193unsigned long __clear_user(void __user *addr, unsigned long n) 193unsigned long arm_clear_user(void __user *addr, unsigned long n)
194{ 194{
195 /* See rational for this in __copy_to_user() above. */ 195 /* See rational for this in __copy_to_user() above. */
196 if (n < 64) 196 if (n < 64)