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:23 -0500 |
commit | 9b7accb286982e0df140b3accae8216656b3ef37 (patch) | |
tree | 7ae054999274f93baf5718f6536d8635f052f166 /arch/sparc | |
parent | cad1c0dfc8961abeb92e5afbfa275b6122501e5f (diff) |
sparc32/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_32.h | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/arch/sparc/include/asm/uaccess_32.h b/arch/sparc/include/asm/uaccess_32.h index 9634d086fc56..8b571a0db0f6 100644 --- a/arch/sparc/include/asm/uaccess_32.h +++ b/arch/sparc/include/asm/uaccess_32.h | |||
@@ -164,7 +164,7 @@ case 2: __get_user_asm(__gu_val,uh,addr,__gu_ret); break; \ | |||
164 | case 4: __get_user_asm(__gu_val,,addr,__gu_ret); break; \ | 164 | case 4: __get_user_asm(__gu_val,,addr,__gu_ret); break; \ |
165 | case 8: __get_user_asm(__gu_val,d,addr,__gu_ret); break; \ | 165 | case 8: __get_user_asm(__gu_val,d,addr,__gu_ret); break; \ |
166 | default: __gu_val = 0; __gu_ret = __get_user_bad(); break; \ | 166 | default: __gu_val = 0; __gu_ret = __get_user_bad(); break; \ |
167 | } } else { __gu_val = 0; __gu_ret = -EFAULT; } x = (type) __gu_val; __gu_ret; }) | 167 | } } else { __gu_val = 0; __gu_ret = -EFAULT; } x = (__force type) __gu_val; __gu_ret; }) |
168 | 168 | ||
169 | #define __get_user_check_ret(x,addr,size,type,retval) ({ \ | 169 | #define __get_user_check_ret(x,addr,size,type,retval) ({ \ |
170 | register unsigned long __gu_val __asm__ ("l1"); \ | 170 | register unsigned long __gu_val __asm__ ("l1"); \ |
@@ -175,7 +175,7 @@ case 2: __get_user_asm_ret(__gu_val,uh,addr,retval); break; \ | |||
175 | case 4: __get_user_asm_ret(__gu_val,,addr,retval); break; \ | 175 | case 4: __get_user_asm_ret(__gu_val,,addr,retval); break; \ |
176 | case 8: __get_user_asm_ret(__gu_val,d,addr,retval); break; \ | 176 | case 8: __get_user_asm_ret(__gu_val,d,addr,retval); break; \ |
177 | default: if (__get_user_bad()) return retval; \ | 177 | default: if (__get_user_bad()) return retval; \ |
178 | } x = (type) __gu_val; } else return retval; }) | 178 | } x = (__force type) __gu_val; } else return retval; }) |
179 | 179 | ||
180 | #define __get_user_nocheck(x,addr,size,type) ({ \ | 180 | #define __get_user_nocheck(x,addr,size,type) ({ \ |
181 | register int __gu_ret; \ | 181 | register int __gu_ret; \ |
@@ -186,7 +186,7 @@ case 2: __get_user_asm(__gu_val,uh,addr,__gu_ret); break; \ | |||
186 | case 4: __get_user_asm(__gu_val,,addr,__gu_ret); break; \ | 186 | case 4: __get_user_asm(__gu_val,,addr,__gu_ret); break; \ |
187 | case 8: __get_user_asm(__gu_val,d,addr,__gu_ret); break; \ | 187 | case 8: __get_user_asm(__gu_val,d,addr,__gu_ret); break; \ |
188 | default: __gu_val = 0; __gu_ret = __get_user_bad(); break; \ | 188 | default: __gu_val = 0; __gu_ret = __get_user_bad(); break; \ |
189 | } x = (type) __gu_val; __gu_ret; }) | 189 | } x = (__force type) __gu_val; __gu_ret; }) |
190 | 190 | ||
191 | #define __get_user_nocheck_ret(x,addr,size,type,retval) ({ \ | 191 | #define __get_user_nocheck_ret(x,addr,size,type,retval) ({ \ |
192 | register unsigned long __gu_val __asm__ ("l1"); \ | 192 | register unsigned long __gu_val __asm__ ("l1"); \ |
@@ -196,7 +196,7 @@ case 2: __get_user_asm_ret(__gu_val,uh,addr,retval); break; \ | |||
196 | case 4: __get_user_asm_ret(__gu_val,,addr,retval); break; \ | 196 | case 4: __get_user_asm_ret(__gu_val,,addr,retval); break; \ |
197 | case 8: __get_user_asm_ret(__gu_val,d,addr,retval); break; \ | 197 | case 8: __get_user_asm_ret(__gu_val,d,addr,retval); break; \ |
198 | default: if (__get_user_bad()) return retval; \ | 198 | default: if (__get_user_bad()) return retval; \ |
199 | } x = (type) __gu_val; }) | 199 | } x = (__force type) __gu_val; }) |
200 | 200 | ||
201 | #define __get_user_asm(x,size,addr,ret) \ | 201 | #define __get_user_asm(x,size,addr,ret) \ |
202 | __asm__ __volatile__( \ | 202 | __asm__ __volatile__( \ |