xtensa: fix error paths in __get_user_{check,size}
authorMax Filippov <jcmvbkbc@gmail.com>
Fri, 22 May 2020 22:52:03 +0000 (15:52 -0700)
committerMax Filippov <jcmvbkbc@gmail.com>
Fri, 22 May 2020 23:09:00 +0000 (16:09 -0700)
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 <jcmvbkbc@gmail.com>
arch/xtensa/include/asm/uaccess.h

index 445bb4c..0fd9b40 100644 (file)
@@ -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)