Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/anholt...
[linux-2.6/mini2440.git] / arch / microblaze / lib / uaccess.c
blob8eb9df5a26c9f53ad53a298330039e1e88898295
1 /*
2 * Copyright (C) 2006 Atmark Techno, Inc.
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
9 #include <linux/string.h>
10 #include <asm/uaccess.h>
12 #include <asm/bug.h>
14 long strnlen_user(const char __user *src, long count)
16 return strlen(src) + 1;
19 #define __do_strncpy_from_user(dst, src, count, res) \
20 do { \
21 char *tmp; \
22 strncpy(dst, src, count); \
23 for (tmp = dst; *tmp && count > 0; tmp++, count--) \
24 ; \
25 res = (tmp - dst); \
26 } while (0)
28 long __strncpy_from_user(char *dst, const char __user *src, long count)
30 long res;
31 __do_strncpy_from_user(dst, src, count, res);
32 return res;
35 long strncpy_from_user(char *dst, const char __user *src, long count)
37 long res = -EFAULT;
38 if (access_ok(VERIFY_READ, src, 1))
39 __do_strncpy_from_user(dst, src, count, res);
40 return res;