On Sun, 21 May 2017, Al Viro wrote:
> 
> fix unsafe_put_user()

So here's my proposed patch on top of yours to fix unsafe_get_user() with 
"long long" arguments, and to clean up the extra-long line you did.

Comments?

                  Linus

---
 arch/x86/include/asm/uaccess.h | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/arch/x86/include/asm/uaccess.h b/arch/x86/include/asm/uaccess.h
index d9668c3beb5b..661c497465ce 100644
--- a/arch/x86/include/asm/uaccess.h
+++ b/arch/x86/include/asm/uaccess.h
@@ -703,14 +703,15 @@ extern struct movsl_mask {
 #define unsafe_put_user(x, ptr, err_label)                                     
\
 do {                                                                           
\
        int __pu_err;                                                           
\
-       __put_user_size((__typeof__(*(ptr)))(x), (ptr), sizeof(*(ptr)), 
__pu_err, -EFAULT);             \
+       __typeof__(*(ptr)) __pu_val = (__typeof__(*(ptr)))(x);                  
\
+       __put_user_size(__pu_val, (ptr), sizeof(*(ptr)), __pu_err, -EFAULT);    
\
        if (unlikely(__pu_err)) goto err_label;                                 
\
 } while (0)
 
 #define unsafe_get_user(x, ptr, err_label)                                     
\
 do {                                                                           
\
        int __gu_err;                                                           
\
-       unsigned long __gu_val;                                                 
\
+       __inttype(*(ptr)) __gu_val;                                             
\
        __get_user_size(__gu_val, (ptr), sizeof(*(ptr)), __gu_err, -EFAULT);    
\
        (x) = (__force __typeof__(*(ptr)))__gu_val;                             
\
        if (unlikely(__gu_err)) goto err_label;                                 
\

Reply via email to