Message ID | 1418575877-21488-14-git-send-email-mst@redhat.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 505e428374bc17a2c0bd388c2e8d892e9cd8eef2 |
Delegated to: | Michael Ellerman |
Headers | show |
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 :-( Ben. > Signed-off-by: Michael S. Tsirkin <mst@redhat.com> > --- > 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; \ > }) >
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@redhat.com> > > --- > > 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; \ > > }) > > >
On Sun, Dec 14, 2014 at 06:52:51PM +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. > > Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Ping. Do powerpc maintainers consider fixing sparse errors applicable for 3.19? If yes, can you pls merge this patch? > --- > 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; \ > }) > > -- > MST >
On Tue, 2014-12-16 at 18:47 +0200, Michael S. Tsirkin wrote: > On Sun, Dec 14, 2014 at 06:52:51PM +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. > > > > Signed-off-by: Michael S. Tsirkin <mst@redhat.com> > > Ping. Ping? You only sent it two days ago. And you only responded to my questions yesterday evening. > Do powerpc maintainers consider fixing sparse errors > applicable for 3.19? Yeah, with your expanded explanation I'm fine with it. > If yes, can you pls merge this patch? Yes I will. cheers
On Tue, 2014-12-16 at 18:47 +0200, Michael S. Tsirkin wrote: > On Sun, Dec 14, 2014 at 06:52:51PM +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. > > > > Signed-off-by: Michael S. Tsirkin <mst@redhat.com> > > Ping. > Do powerpc maintainers consider fixing sparse errors > applicable for 3.19? > If yes, can you pls merge this patch? Relax :-) Our patches are tracked in Patchwork and such fixes aren't necessarily constrained by the merge window. Michael will probably pick it up but don't expect systematic replies to patches in 2 days ... Also, when sending a series like that where one of us only gets CCed on one of the patch, it helps to make it clear whether you only expect an ack or whether you expect us to take the patch. Cheers, Ben. > > --- > > 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; \ > > }) > > > > -- > > MST > > > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/
On Wednesday 17 December 2014 11:52:36 Benjamin Herrenschmidt wrote: > On Tue, 2014-12-16 at 18:47 +0200, Michael S. Tsirkin wrote: > > On Sun, Dec 14, 2014 at 06:52:51PM +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. > > > > > > Signed-off-by: Michael S. Tsirkin <mst@redhat.com> > > > > Ping. > > Do powerpc maintainers consider fixing sparse errors > > applicable for 3.19? > > If yes, can you pls merge this patch? > > Relax Our patches are tracked in Patchwork and such fixes aren't > necessarily constrained by the merge window. Michael will probably > pick it up but don't expect systematic replies to patches in 2 days ... > > Also, when sending a series like that where one of us only gets > CCed on one of the patch, it helps to make it clear whether you > only expect an ack or whether you expect us to take the patch. Michael initially asked how these patches should merged, and as I discussed with him on IRC, I wouldn't take them through the asm-generic tree for 3.19 at this point, but I offered to take the ones that are not picked up by arch maintainers through that tree for 3.20. I also recommend to him to clarify this with maintainers of the architectures he cares about most so they can decide whether to pick it up or not, which triggered the message above. Arnd
On Wed, 2014-12-17 at 11:53 +0100, Arnd Bergmann wrote: > On Wednesday 17 December 2014 11:52:36 Benjamin Herrenschmidt wrote: > > On Tue, 2014-12-16 at 18:47 +0200, Michael S. Tsirkin wrote: > > > On Sun, Dec 14, 2014 at 06:52:51PM +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. > > > > > > > > Signed-off-by: Michael S. Tsirkin <mst@redhat.com> > > > > > > Ping. > > > Do powerpc maintainers consider fixing sparse errors > > > applicable for 3.19? > > > If yes, can you pls merge this patch? > > > > Relax Our patches are tracked in Patchwork and such fixes aren't > > necessarily constrained by the merge window. Michael will probably > > pick it up but don't expect systematic replies to patches in 2 days ... > > > > Also, when sending a series like that where one of us only gets > > CCed on one of the patch, it helps to make it clear whether you > > only expect an ack or whether you expect us to take the patch. > > Michael initially asked how these patches should merged, and as I > discussed with him on IRC, I wouldn't take them through the asm-generic > tree for 3.19 at this point, but I offered to take the ones that > are not picked up by arch maintainers through that tree for 3.20. > > I also recommend to him to clarify this with maintainers of the > architectures he cares about most so they can decide whether to pick > it up or not, which triggered the message above. Ok, I incorrectly assumed the above was a nag for not looking at his patch yet :) I don't have any objection, but I'm leaving the merging for now to Michael (and possibly for ever, we'll see ... :) as I'm on vacation until end of January. Cheers, Ben.
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; \ })
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> --- arch/powerpc/include/asm/uaccess.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)