The only reason uaccess routines might sleep
is if they fault. Make this explicit.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1369577426-26721-1-git-send-email-mst@redhat.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
#define put_user(x, ptr) \
({ \
#define put_user(x, ptr) \
({ \
access_ok(VERIFY_WRITE, ptr, sizeof(*ptr)) ? \
__put_user(x, ptr) : \
-EFAULT; \
access_ok(VERIFY_WRITE, ptr, sizeof(*ptr)) ? \
__put_user(x, ptr) : \
-EFAULT; \
#define get_user(x, ptr) \
({ \
#define get_user(x, ptr) \
({ \
access_ok(VERIFY_READ, ptr, sizeof(*ptr)) ? \
__get_user(x, ptr) : \
-EFAULT; \
access_ok(VERIFY_READ, ptr, sizeof(*ptr)) ? \
__get_user(x, ptr) : \
-EFAULT; \
static inline long copy_from_user(void *to,
const void __user * from, unsigned long n)
{
static inline long copy_from_user(void *to,
const void __user * from, unsigned long n)
{
if (access_ok(VERIFY_READ, from, n))
return __copy_from_user(to, from, n);
else
if (access_ok(VERIFY_READ, from, n))
return __copy_from_user(to, from, n);
else
static inline long copy_to_user(void __user *to,
const void *from, unsigned long n)
{
static inline long copy_to_user(void __user *to,
const void *from, unsigned long n)
{
if (access_ok(VERIFY_WRITE, to, n))
return __copy_to_user(to, from, n);
else
if (access_ok(VERIFY_WRITE, to, n))
return __copy_to_user(to, from, n);
else
static inline __must_check unsigned long
clear_user(void __user *to, unsigned long n)
{
static inline __must_check unsigned long
clear_user(void __user *to, unsigned long n)
{
if (!access_ok(VERIFY_WRITE, to, n))
return n;
if (!access_ok(VERIFY_WRITE, to, n))
return n;