m68k/uaccess: fix sparse errors
authorMichael S. Tsirkin <mst@redhat.com>
Thu, 11 Dec 2014 23:56:04 +0000 (01:56 +0200)
committerMichael S. Tsirkin <mst@redhat.com>
Tue, 13 Jan 2015 13:23:28 +0000 (15:23 +0200)
virtio wants to read bitwise types from userspace using get_user.  At the
moment this triggers sparse errors, since the value is passed through an
integer.

Fix that up using __force.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
arch/m68k/include/asm/uaccess_mm.h

index 15901db435b90675dd5ab9f931dc331632c04705..d228601b3afce762cd94360240e6126647fdf6a8 100644 (file)
@@ -128,25 +128,25 @@ asm volatile ("\n"                                        \
 #define put_user(x, ptr)       __put_user(x, ptr)
 
 
-#define __get_user_asm(res, x, ptr, type, bwl, reg, err) ({    \
-       type __gu_val;                                          \
-       asm volatile ("\n"                                      \
-               "1:     "MOVES"."#bwl"  %2,%1\n"                \
-               "2:\n"                                          \
-               "       .section .fixup,\"ax\"\n"               \
-               "       .even\n"                                \
-               "10:    move.l  %3,%0\n"                        \
-               "       sub.l   %1,%1\n"                        \
-               "       jra     2b\n"                           \
-               "       .previous\n"                            \
-               "\n"                                            \
-               "       .section __ex_table,\"a\"\n"            \
-               "       .align  4\n"                            \
-               "       .long   1b,10b\n"                       \
-               "       .previous"                              \
-               : "+d" (res), "=&" #reg (__gu_val)              \
-               : "m" (*(ptr)), "i" (err));                     \
-       (x) = (typeof(*(ptr)))(unsigned long)__gu_val;          \
+#define __get_user_asm(res, x, ptr, type, bwl, reg, err) ({            \
+       type __gu_val;                                                  \
+       asm volatile ("\n"                                              \
+               "1:     "MOVES"."#bwl"  %2,%1\n"                        \
+               "2:\n"                                                  \
+               "       .section .fixup,\"ax\"\n"                       \
+               "       .even\n"                                        \
+               "10:    move.l  %3,%0\n"                                \
+               "       sub.l   %1,%1\n"                                \
+               "       jra     2b\n"                                   \
+               "       .previous\n"                                    \
+               "\n"                                                    \
+               "       .section __ex_table,\"a\"\n"                    \
+               "       .align  4\n"                                    \
+               "       .long   1b,10b\n"                               \
+               "       .previous"                                      \
+               : "+d" (res), "=&" #reg (__gu_val)                      \
+               : "m" (*(ptr)), "i" (err));                             \
+       (x) = (__force typeof(*(ptr)))(__force unsigned long)__gu_val;  \
 })
 
 #define __get_user(x, ptr)                                             \
@@ -188,7 +188,7 @@ asm volatile ("\n"                                  \
                          "+a" (__gu_ptr)                               \
                        : "i" (-EFAULT)                                 \
                        : "memory");                                    \
-               (x) = (typeof(*(ptr)))__gu_val;                         \
+               (x) = (__force typeof(*(ptr)))__gu_val;                 \
                break;                                                  \
            }   */                                                      \
        default:                                                        \
This page took 0.046831 seconds and 5 git commands to generate.