diff options
author | Michael S. Tsirkin <mst@redhat.com> | 2015-01-06 07:37:22 -0500 |
---|---|---|
committer | Michael S. Tsirkin <mst@redhat.com> | 2015-01-13 08:23:32 -0500 |
commit | 1734bffc30b80ab2447345369c84175e721ebd65 (patch) | |
tree | 95b4503cc910f42bbe3b855473e3f1ef0238255a /arch/blackfin/include/asm | |
parent | e8b94dea3867139fe92f03b913e38ca841e390fd (diff) |
blackfin: fix put_user sparse errors
virtio wants to write bitwise types to userspace using put_user.
At the moment this triggers sparse errors, since the value is passed
through an integer.
For example:
__le32 __user *p;
__le32 x;
put_user(x, p);
is safe, but currently triggers a sparse warning.
Fix that up using __force.
Note: this does not suppress any useful sparse checks since caller
assigns x to typeof(*p), which in turn forces all the necessary type
checks.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Diffstat (limited to 'arch/blackfin/include/asm')
-rw-r--r-- | arch/blackfin/include/asm/uaccess.h | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/arch/blackfin/include/asm/uaccess.h b/arch/blackfin/include/asm/uaccess.h index 2dcc9303355d..4bf968c01cf9 100644 --- a/arch/blackfin/include/asm/uaccess.h +++ b/arch/blackfin/include/asm/uaccess.h | |||
@@ -89,10 +89,10 @@ struct exception_table_entry { | |||
89 | break; \ | 89 | break; \ |
90 | case 8: { \ | 90 | case 8: { \ |
91 | long _xl, _xh; \ | 91 | long _xl, _xh; \ |
92 | _xl = ((long *)&_x)[0]; \ | 92 | _xl = ((__force long *)&_x)[0]; \ |
93 | _xh = ((long *)&_x)[1]; \ | 93 | _xh = ((__force long *)&_x)[1]; \ |
94 | __put_user_asm(_xl, ((long __user *)_p)+0, ); \ | 94 | __put_user_asm(_xl, ((__force long __user *)_p)+0, );\ |
95 | __put_user_asm(_xh, ((long __user *)_p)+1, ); \ | 95 | __put_user_asm(_xh, ((__force long __user *)_p)+1, );\ |
96 | } break; \ | 96 | } break; \ |
97 | default: \ | 97 | default: \ |
98 | _err = __put_user_bad(); \ | 98 | _err = __put_user_bad(); \ |