openrisc: use generic strnlen_user() function

The generic version is both easier to support and more correct.

Signed-off-by: Jonas Bonn <jonas@southpole.se>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Jonas Bonn
2012-05-27 10:25:47 +02:00
committed by Linus Torvalds
parent 1629372caa
commit b48b2c3e50
3 changed files with 3 additions and 75 deletions

View File

@@ -318,33 +318,7 @@ clear_user(void *addr, unsigned long size)
extern long strncpy_from_user(char *dest, const char __user *src, long count);
/*
* Return the size of a string (including the ending 0)
*
* Return 0 for error
*/
extern int __strnlen_user(const char *str, long len, unsigned long top);
/*
* Returns the length of the string at str (including the null byte),
* or 0 if we hit a page we can't access,
* or something > len if we didn't find a null byte.
*
* The `top' parameter to __strnlen_user is to make sure that
* we can never overflow from the user area into kernel space.
*/
static inline long strnlen_user(const char __user *str, long len)
{
unsigned long top = (unsigned long)get_fs();
unsigned long res = 0;
if (__addr_ok(str))
res = __strnlen_user(str, len, top);
return res;
}
#define strlen_user(str) strnlen_user(str, TASK_SIZE-1)
extern __must_check long strlen_user(const char __user *str);
extern __must_check long strnlen_user(const char __user *str, long n);
#endif /* __ASM_OPENRISC_UACCESS_H */