diff options
Diffstat (limited to 'arch/x86/lib/usercopy_32.c')
-rw-r--r-- | arch/x86/lib/usercopy_32.c | 41 |
1 files changed, 0 insertions, 41 deletions
diff --git a/arch/x86/lib/usercopy_32.c b/arch/x86/lib/usercopy_32.c index 883b216c60b2..1781b2f950e2 100644 --- a/arch/x86/lib/usercopy_32.c +++ b/arch/x86/lib/usercopy_32.c | |||
@@ -95,47 +95,6 @@ __clear_user(void __user *to, unsigned long n) | |||
95 | } | 95 | } |
96 | EXPORT_SYMBOL(__clear_user); | 96 | EXPORT_SYMBOL(__clear_user); |
97 | 97 | ||
98 | /** | ||
99 | * strnlen_user: - Get the size of a string in user space. | ||
100 | * @s: The string to measure. | ||
101 | * @n: The maximum valid length | ||
102 | * | ||
103 | * Get the size of a NUL-terminated string in user space. | ||
104 | * | ||
105 | * Returns the size of the string INCLUDING the terminating NUL. | ||
106 | * On exception, returns 0. | ||
107 | * If the string is too long, returns a value greater than @n. | ||
108 | */ | ||
109 | long strnlen_user(const char __user *s, long n) | ||
110 | { | ||
111 | unsigned long mask = -__addr_ok(s); | ||
112 | unsigned long res, tmp; | ||
113 | |||
114 | might_fault(); | ||
115 | |||
116 | __asm__ __volatile__( | ||
117 | " testl %0, %0\n" | ||
118 | " jz 3f\n" | ||
119 | " andl %0,%%ecx\n" | ||
120 | "0: repne; scasb\n" | ||
121 | " setne %%al\n" | ||
122 | " subl %%ecx,%0\n" | ||
123 | " addl %0,%%eax\n" | ||
124 | "1:\n" | ||
125 | ".section .fixup,\"ax\"\n" | ||
126 | "2: xorl %%eax,%%eax\n" | ||
127 | " jmp 1b\n" | ||
128 | "3: movb $1,%%al\n" | ||
129 | " jmp 1b\n" | ||
130 | ".previous\n" | ||
131 | _ASM_EXTABLE(0b,2b) | ||
132 | :"=&r" (n), "=&D" (s), "=&a" (res), "=&c" (tmp) | ||
133 | :"0" (n), "1" (s), "2" (0), "3" (mask) | ||
134 | :"cc"); | ||
135 | return res & mask; | ||
136 | } | ||
137 | EXPORT_SYMBOL(strnlen_user); | ||
138 | |||
139 | #ifdef CONFIG_X86_INTEL_USERCOPY | 98 | #ifdef CONFIG_X86_INTEL_USERCOPY |
140 | static unsigned long | 99 | static unsigned long |
141 | __copy_user_intel(void __user *to, const void *from, unsigned long size) | 100 | __copy_user_intel(void __user *to, const void *from, unsigned long size) |