Error paths in __get_user_check and __get_user_size directly assing 0 to
the result. It causes the following sparse warnings:

  sparse: warning: Using plain integer as NULL pointer

Convert 0 to the type pointed to by the user pointer before assigning it.

Signed-off-by: Max Filippov <jcmvb...@gmail.com>
---
 arch/xtensa/include/asm/uaccess.h | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/arch/xtensa/include/asm/uaccess.h 
b/arch/xtensa/include/asm/uaccess.h
index 445bb4cf3c28..0fd9b4086ae2 100644
--- a/arch/xtensa/include/asm/uaccess.h
+++ b/arch/xtensa/include/asm/uaccess.h
@@ -184,7 +184,7 @@ __asm__ __volatile__(                                       
\
        if (access_ok(__gu_addr, size))                                 \
                __get_user_size((x), __gu_addr, (size), __gu_err);      \
        else                                                            \
-               (x) = 0;                                                \
+               (x) = (__typeof__(*(ptr)))0;                            \
        __gu_err;                                                       \
 })
 
@@ -202,13 +202,15 @@ do {                                                      
                \
                u64 __x;                                                \
                if (unlikely(__copy_from_user(&__x, ptr, 8))) {         \
                        retval = -EFAULT;                               \
-                       (x) = 0;                                        \
+                       (x) = (__typeof__(*(ptr)))0;                    \
                } else {                                                \
                        (x) = *(__force __typeof__(*(ptr)) *)&__x;      \
                }                                                       \
                break;                                                  \
        }                                                               \
-       default: (x) = 0; __get_user_bad();                             \
+       default:                                                        \
+               (x) = (__typeof__(*(ptr)))0;                            \
+               __get_user_bad();                                       \
        }                                                               \
 } while (0)
 
-- 
2.20.1

Reply via email to