On Tuesday 17 May 2011, Mark Salter wrote: > diff --git a/include/asm-generic/uaccess.h b/include/asm-generic/uaccess.h > index 1d0fdf8..5079335 100644 > --- a/include/asm-generic/uaccess.h > +++ b/include/asm-generic/uaccess.h > @@ -162,9 +162,10 @@ static inline __must_check long __copy_to_user(void __user *to, > > #define put_user(x, ptr) \ > ({ \ > + __typeof__(*(ptr)) *__pu_ptr = (ptr); \ > might_sleep(); \ > - access_ok(VERIFY_WRITE, ptr, sizeof(*ptr)) ? \ > - __put_user(x, ptr) : \ > + access_ok(VERIFY_WRITE, __pu_ptr, sizeof(*ptr)) ? \ > + __put_user(x, __pu_ptr) : \ > -EFAULT; \ > }) > > @@ -218,9 +219,10 @@ extern int __put_user_bad(void) __attribute__((noreturn)); > > #define get_user(x, ptr) \ > ({ \ > + __typeof__(*(ptr)) *__gu_ptr = (ptr); \ > might_sleep(); \ > - access_ok(VERIFY_READ, ptr, sizeof(*ptr)) ? \ > - __get_user(x, ptr) : \ > + access_ok(VERIFY_READ, __gu_ptr, sizeof(*ptr)) ? \ > + __get_user(x, __gu_ptr) : \ > -EFAULT; \ > }) > IIRC, this doesn't work for get_user if the pointer is marked const. Do you see a real problem with the current definitions, or are you just trying to improve them genrally? Arnd -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html