m68k/uaccess: fix sparse errors

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>
This commit is contained in:
Michael S. Tsirkin 2014-12-12 01:56:04 +02:00
parent 1d638efce8
commit 09a2f7cf6a

View File

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