xtensa: fix type conversion in __get_user_size
authorMax Filippov <jcmvbkbc@gmail.com>
Fri, 22 May 2020 20:20:05 +0000 (13:20 -0700)
committerMax Filippov <jcmvbkbc@gmail.com>
Fri, 22 May 2020 21:33:52 +0000 (14:33 -0700)
8-byte access in __get_user_size converts pointer to temporary variable
to the type of original user pointer and then dereferences it, resulting
in the following sparse warning:

  sparse: warning: dereference of noderef expression

Instead dereference the original user pointer under the __typeof__ and
add indirection outside.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
arch/xtensa/include/asm/uaccess.h

index 754a7c9..445bb4c 100644 (file)
@@ -204,7 +204,7 @@ do {                                                                        \
                        retval = -EFAULT;                               \
                        (x) = 0;                                        \
                } else {                                                \
-                       (x) = *(__force __typeof__((ptr)))&__x;         \
+                       (x) = *(__force __typeof__(*(ptr)) *)&__x;      \
                }                                                       \
                break;                                                  \
        }                                                               \