um: switch to RAW_COPY_USER
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
d597580d37
commit
a668ce3a00
|
@ -13,6 +13,7 @@ config UML
|
||||||
select GENERIC_CLOCKEVENTS
|
select GENERIC_CLOCKEVENTS
|
||||||
select HAVE_GCC_PLUGINS
|
select HAVE_GCC_PLUGINS
|
||||||
select TTY # Needed for line.c
|
select TTY # Needed for line.c
|
||||||
|
select ARCH_HAS_RAW_COPY_USER
|
||||||
|
|
||||||
config MMU
|
config MMU
|
||||||
bool
|
bool
|
||||||
|
|
|
@ -21,8 +21,8 @@
|
||||||
#define __addr_range_nowrap(addr, size) \
|
#define __addr_range_nowrap(addr, size) \
|
||||||
((unsigned long) (addr) <= ((unsigned long) (addr) + (size)))
|
((unsigned long) (addr) <= ((unsigned long) (addr) + (size)))
|
||||||
|
|
||||||
extern long __copy_from_user(void *to, const void __user *from, unsigned long n);
|
extern unsigned long raw_copy_from_user(void *to, const void __user *from, unsigned long n);
|
||||||
extern long __copy_to_user(void __user *to, const void *from, unsigned long n);
|
extern unsigned long raw_copy_to_user(void __user *to, const void *from, unsigned long n);
|
||||||
extern long __strncpy_from_user(char *dst, const char __user *src, long count);
|
extern long __strncpy_from_user(char *dst, const char __user *src, long count);
|
||||||
extern long __strnlen_user(const void __user *str, long len);
|
extern long __strnlen_user(const void __user *str, long len);
|
||||||
extern unsigned long __clear_user(void __user *mem, unsigned long len);
|
extern unsigned long __clear_user(void __user *mem, unsigned long len);
|
||||||
|
@ -33,8 +33,8 @@ static inline int __access_ok(unsigned long addr, unsigned long size);
|
||||||
#define __clear_user __clear_user
|
#define __clear_user __clear_user
|
||||||
#define __strnlen_user __strnlen_user
|
#define __strnlen_user __strnlen_user
|
||||||
#define __strncpy_from_user __strncpy_from_user
|
#define __strncpy_from_user __strncpy_from_user
|
||||||
#define __copy_to_user_inatomic __copy_to_user
|
#define INLINE_COPY_FROM_USER
|
||||||
#define __copy_from_user_inatomic __copy_from_user
|
#define INLINE_COPY_TO_USER
|
||||||
|
|
||||||
#include <asm-generic/uaccess.h>
|
#include <asm-generic/uaccess.h>
|
||||||
|
|
||||||
|
|
|
@ -139,7 +139,7 @@ static int copy_chunk_from_user(unsigned long from, int len, void *arg)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
long __copy_from_user(void *to, const void __user *from, unsigned long n)
|
unsigned long raw_copy_from_user(void *to, const void __user *from, unsigned long n)
|
||||||
{
|
{
|
||||||
if (uaccess_kernel()) {
|
if (uaccess_kernel()) {
|
||||||
memcpy(to, (__force void*)from, n);
|
memcpy(to, (__force void*)from, n);
|
||||||
|
@ -148,7 +148,7 @@ long __copy_from_user(void *to, const void __user *from, unsigned long n)
|
||||||
|
|
||||||
return buffer_op((unsigned long) from, n, 0, copy_chunk_from_user, &to);
|
return buffer_op((unsigned long) from, n, 0, copy_chunk_from_user, &to);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(__copy_from_user);
|
EXPORT_SYMBOL(raw_copy_from_user);
|
||||||
|
|
||||||
static int copy_chunk_to_user(unsigned long to, int len, void *arg)
|
static int copy_chunk_to_user(unsigned long to, int len, void *arg)
|
||||||
{
|
{
|
||||||
|
@ -159,7 +159,7 @@ static int copy_chunk_to_user(unsigned long to, int len, void *arg)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
long __copy_to_user(void __user *to, const void *from, unsigned long n)
|
unsigned long raw_copy_to_user(void __user *to, const void *from, unsigned long n)
|
||||||
{
|
{
|
||||||
if (uaccess_kernel()) {
|
if (uaccess_kernel()) {
|
||||||
memcpy((__force void *) to, from, n);
|
memcpy((__force void *) to, from, n);
|
||||||
|
@ -168,7 +168,7 @@ long __copy_to_user(void __user *to, const void *from, unsigned long n)
|
||||||
|
|
||||||
return buffer_op((unsigned long) to, n, 1, copy_chunk_to_user, &from);
|
return buffer_op((unsigned long) to, n, 1, copy_chunk_to_user, &from);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(__copy_to_user);
|
EXPORT_SYMBOL(raw_copy_to_user);
|
||||||
|
|
||||||
static int strncpy_chunk_from_user(unsigned long from, int len, void *arg)
|
static int strncpy_chunk_from_user(unsigned long from, int len, void *arg)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue