diff options
author | Michael S. Tsirkin <mst@redhat.com> | 2014-12-11 18:56:04 -0500 |
---|---|---|
committer | Michael S. Tsirkin <mst@redhat.com> | 2015-01-13 08:23:26 -0500 |
commit | 1d638efce8cc77c1ec838886e9a64f98aa58b780 (patch) | |
tree | 6051e6d5445e3cece947b31cfeadab1efcce85c3 /arch/sparc | |
parent | 9b7accb286982e0df140b3accae8216656b3ef37 (diff) |
sparc64/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: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc')
-rw-r--r-- | arch/sparc/include/asm/uaccess_64.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/sparc/include/asm/uaccess_64.h b/arch/sparc/include/asm/uaccess_64.h index c990a5e577f0..b80866d90768 100644 --- a/arch/sparc/include/asm/uaccess_64.h +++ b/arch/sparc/include/asm/uaccess_64.h | |||
@@ -145,7 +145,7 @@ case 2: __get_user_asm(__gu_val,uh,addr,__gu_ret); break; \ | |||
145 | case 4: __get_user_asm(__gu_val,uw,addr,__gu_ret); break; \ | 145 | case 4: __get_user_asm(__gu_val,uw,addr,__gu_ret); break; \ |
146 | case 8: __get_user_asm(__gu_val,x,addr,__gu_ret); break; \ | 146 | case 8: __get_user_asm(__gu_val,x,addr,__gu_ret); break; \ |
147 | default: __gu_val = 0; __gu_ret = __get_user_bad(); break; \ | 147 | default: __gu_val = 0; __gu_ret = __get_user_bad(); break; \ |
148 | } data = (type) __gu_val; __gu_ret; }) | 148 | } data = (__force type) __gu_val; __gu_ret; }) |
149 | 149 | ||
150 | #define __get_user_nocheck_ret(data,addr,size,type,retval) ({ \ | 150 | #define __get_user_nocheck_ret(data,addr,size,type,retval) ({ \ |
151 | register unsigned long __gu_val __asm__ ("l1"); \ | 151 | register unsigned long __gu_val __asm__ ("l1"); \ |
@@ -155,7 +155,7 @@ case 2: __get_user_asm_ret(__gu_val,uh,addr,retval); break; \ | |||
155 | case 4: __get_user_asm_ret(__gu_val,uw,addr,retval); break; \ | 155 | case 4: __get_user_asm_ret(__gu_val,uw,addr,retval); break; \ |
156 | case 8: __get_user_asm_ret(__gu_val,x,addr,retval); break; \ | 156 | case 8: __get_user_asm_ret(__gu_val,x,addr,retval); break; \ |
157 | default: if (__get_user_bad()) return retval; \ | 157 | default: if (__get_user_bad()) return retval; \ |
158 | } data = (type) __gu_val; }) | 158 | } data = (__force type) __gu_val; }) |
159 | 159 | ||
160 | #define __get_user_asm(x,size,addr,ret) \ | 160 | #define __get_user_asm(x,size,addr,ret) \ |
161 | __asm__ __volatile__( \ | 161 | __asm__ __volatile__( \ |