On Mon, 2014-12-15 at 11:05 +1100, Benjamin Herrenschmidt wrote: > On Sun, 2014-12-14 at 18:52 +0200, Michael S. Tsirkin wrote: > > 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. > > You mean bitfields ? Argh ... we should just remove them from the > compiler and be done with it :-( Oh... no I suppose you actually meant explicit endian fields, ie, __be32 or __le32 right ? Ack on that. It sucks a bit but I think it's acceptable. Cheers, Ben. > Ben. > > > Signed-off-by: Michael S. Tsirkin <mst@xxxxxxxxxx> > > --- > > arch/powerpc/include/asm/uaccess.h | 6 +++--- > > 1 file changed, 3 insertions(+), 3 deletions(-) > > > > diff --git a/arch/powerpc/include/asm/uaccess.h b/arch/powerpc/include/asm/uaccess.h > > index 9485b43..a0c071d 100644 > > --- a/arch/powerpc/include/asm/uaccess.h > > +++ b/arch/powerpc/include/asm/uaccess.h > > @@ -284,7 +284,7 @@ do { \ > > if (!is_kernel_addr((unsigned long)__gu_addr)) \ > > might_fault(); \ > > __get_user_size(__gu_val, __gu_addr, (size), __gu_err); \ > > - (x) = (__typeof__(*(ptr)))__gu_val; \ > > + (x) = (__force __typeof__(*(ptr)))__gu_val; \ > > __gu_err; \ > > }) > > #endif /* __powerpc64__ */ > > @@ -297,7 +297,7 @@ do { \ > > might_fault(); \ > > if (access_ok(VERIFY_READ, __gu_addr, (size))) \ > > __get_user_size(__gu_val, __gu_addr, (size), __gu_err); \ > > - (x) = (__typeof__(*(ptr)))__gu_val; \ > > + (x) = (__force __typeof__(*(ptr)))__gu_val; \ > > __gu_err; \ > > }) > > > > @@ -308,7 +308,7 @@ do { \ > > const __typeof__(*(ptr)) __user *__gu_addr = (ptr); \ > > __chk_user_ptr(ptr); \ > > __get_user_size(__gu_val, __gu_addr, (size), __gu_err); \ > > - (x) = (__typeof__(*(ptr)))__gu_val; \ > > + (x) = (__force __typeof__(*(ptr)))__gu_val; \ > > __gu_err; \ > > }) > > > -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html