forked from luck/tmp_suning_uos_patched
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:
parent
1d638efce8
commit
09a2f7cf6a
@ -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: \
|
||||||
|
Loading…
Reference in New Issue
Block a user