diff options
Diffstat (limited to 'arch/microblaze/lib/uaccess.c')
| -rw-r--r-- | arch/microblaze/lib/uaccess.c | 41 | 
1 files changed, 41 insertions, 0 deletions
| diff --git a/arch/microblaze/lib/uaccess.c b/arch/microblaze/lib/uaccess.c new file mode 100644 index 00000000000..8eb9df5a26c --- /dev/null +++ b/arch/microblaze/lib/uaccess.c @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2006 Atmark Techno, Inc. + * + * This file is subject to the terms and conditions of the GNU General Public + * License.  See the file "COPYING" in the main directory of this archive + * for more details. + */ + +#include <linux/string.h> +#include <asm/uaccess.h> + +#include <asm/bug.h> + +long strnlen_user(const char __user *src, long count) +{ +	return strlen(src) + 1; +} + +#define __do_strncpy_from_user(dst, src, count, res)			\ +	do {								\ +		char *tmp;						\ +		strncpy(dst, src, count);				\ +		for (tmp = dst; *tmp && count > 0; tmp++, count--)	\ +			;						\ +		res = (tmp - dst);					\ +	} while (0) + +long __strncpy_from_user(char *dst, const char __user *src, long count) +{ +	long res; +	__do_strncpy_from_user(dst, src, count, res); +	return res; +} + +long strncpy_from_user(char *dst, const char __user *src, long count) +{ +	long res = -EFAULT; +	if (access_ok(VERIFY_READ, src, 1)) +		__do_strncpy_from_user(dst, src, count, res); +	return res; +} | 
