* [PATCH v2 09/40] metag/uaccess: fix sparse errors [not found] <1420558883-10131-1-git-send-email-mst@redhat.com> @ 2015-01-06 15:43 ` Michael S. Tsirkin [not found] ` <1420558883-10131-10-git-send-email-mst-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 2015-01-06 15:44 ` [PATCH v2 20/40] metag: fix put_user " Michael S. Tsirkin 1 sibling, 1 reply; 5+ messages in thread From: Michael S. Tsirkin @ 2015-01-06 15:43 UTC (permalink / raw) To: linux-kernel; +Cc: Arnd Bergmann, linux-arch, James Hogan, linux-metag 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/metag/include/asm/uaccess.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/metag/include/asm/uaccess.h b/arch/metag/include/asm/uaccess.h index 0748b0a..c314b45 100644 --- a/arch/metag/include/asm/uaccess.h +++ b/arch/metag/include/asm/uaccess.h @@ -135,7 +135,7 @@ extern long __get_user_bad(void); ({ \ long __gu_err, __gu_val; \ __get_user_size(__gu_val, (ptr), (size), __gu_err); \ - (x) = (__typeof__(*(ptr)))__gu_val; \ + (x) = (__force __typeof__(*(ptr)))__gu_val; \ __gu_err; \ }) @@ -145,7 +145,7 @@ extern long __get_user_bad(void); const __typeof__(*(ptr)) __user *__gu_addr = (ptr); \ 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; \ }) -- MST ^ permalink raw reply related [flat|nested] 5+ messages in thread
[parent not found: <1420558883-10131-10-git-send-email-mst-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>]
* Re: [PATCH v2 09/40] metag/uaccess: fix sparse errors [not found] ` <1420558883-10131-10-git-send-email-mst-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> @ 2015-01-07 9:47 ` James Hogan [not found] ` <54AD00AC.2030801-1AXoQHu6uovQT0dZR+AlfA@public.gmane.org> 0 siblings, 1 reply; 5+ messages in thread From: James Hogan @ 2015-01-07 9:47 UTC (permalink / raw) To: Michael S. Tsirkin, linux-kernel-u79uwXL29TY76Z2rM5mHXA Cc: Arnd Bergmann, linux-arch-u79uwXL29TY76Z2rM5mHXA, linux-metag-u79uwXL29TY76Z2rM5mHXA [-- Attachment #1: Type: text/plain, Size: 1865 bytes --] Hi Machael, On 06/01/15 15:43, 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-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> > --- > arch/metag/include/asm/uaccess.h | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/arch/metag/include/asm/uaccess.h b/arch/metag/include/asm/uaccess.h > index 0748b0a..c314b45 100644 > --- a/arch/metag/include/asm/uaccess.h > +++ b/arch/metag/include/asm/uaccess.h > @@ -135,7 +135,7 @@ extern long __get_user_bad(void); > ({ \ > long __gu_err, __gu_val; \ > __get_user_size(__gu_val, (ptr), (size), __gu_err); \ > - (x) = (__typeof__(*(ptr)))__gu_val; \ > + (x) = (__force __typeof__(*(ptr)))__gu_val; \ As I mentioned before, can you please adjust the position of the \ to line up. > __gu_err; \ > }) > > @@ -145,7 +145,7 @@ extern long __get_user_bad(void); > const __typeof__(*(ptr)) __user *__gu_addr = (ptr); \ > 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; \ same here (this one causes checkpatch error due to 80 column limit). > __gu_err; \ > }) > > With those changes, Acked-by: James Hogan <james.hogan-1AXoQHu6uovQT0dZR+AlfA@public.gmane.org> Cheers James [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 819 bytes --] ^ permalink raw reply [flat|nested] 5+ messages in thread
[parent not found: <54AD00AC.2030801-1AXoQHu6uovQT0dZR+AlfA@public.gmane.org>]
* Re: [PATCH v2 09/40] metag/uaccess: fix sparse errors [not found] ` <54AD00AC.2030801-1AXoQHu6uovQT0dZR+AlfA@public.gmane.org> @ 2015-01-07 9:55 ` Michael S. Tsirkin 0 siblings, 0 replies; 5+ messages in thread From: Michael S. Tsirkin @ 2015-01-07 9:55 UTC (permalink / raw) To: James Hogan Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA, Arnd Bergmann, linux-arch-u79uwXL29TY76Z2rM5mHXA, linux-metag-u79uwXL29TY76Z2rM5mHXA On Wed, Jan 07, 2015 at 09:47:24AM +0000, James Hogan wrote: > Hi Machael, > > On 06/01/15 15:43, 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-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> > > --- > > arch/metag/include/asm/uaccess.h | 4 ++-- > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/arch/metag/include/asm/uaccess.h b/arch/metag/include/asm/uaccess.h > > index 0748b0a..c314b45 100644 > > --- a/arch/metag/include/asm/uaccess.h > > +++ b/arch/metag/include/asm/uaccess.h > > @@ -135,7 +135,7 @@ extern long __get_user_bad(void); > > ({ \ > > long __gu_err, __gu_val; \ > > __get_user_size(__gu_val, (ptr), (size), __gu_err); \ > > - (x) = (__typeof__(*(ptr)))__gu_val; \ > > + (x) = (__force __typeof__(*(ptr)))__gu_val; \ > > As I mentioned before, can you please adjust the position of the \ to > line up. > > __gu_err; \ > > }) > > > > @@ -145,7 +145,7 @@ extern long __get_user_bad(void); > > const __typeof__(*(ptr)) __user *__gu_addr = (ptr); \ > > 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; \ > > same here (this one causes checkpatch error due to 80 column limit). Oops. Sorry. Will fix both. I won't repost unless there are more issues. > > > __gu_err; \ > > }) > > > > > > With those changes, > Acked-by: James Hogan <james.hogan-1AXoQHu6uovQT0dZR+AlfA@public.gmane.org> > > Cheers > James > -- To unsubscribe from this list: send the line "unsubscribe linux-metag" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v2 20/40] metag: fix put_user sparse errors [not found] <1420558883-10131-1-git-send-email-mst@redhat.com> 2015-01-06 15:43 ` [PATCH v2 09/40] metag/uaccess: fix sparse errors Michael S. Tsirkin @ 2015-01-06 15:44 ` Michael S. Tsirkin 2015-01-07 9:55 ` James Hogan 1 sibling, 1 reply; 5+ messages in thread From: Michael S. Tsirkin @ 2015-01-06 15:44 UTC (permalink / raw) To: linux-kernel; +Cc: Arnd Bergmann, linux-arch, James Hogan, linux-metag 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. This also fixes warnings due to writing a pointer out to userland. Note: this does not suppress any useful sparse checks since callers do a cast (__typeof__(*(ptr))) (x) which in turn forces all the necessary type checks. Suggested-by: James Hogan <james.hogan@imgtec.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> --- arch/metag/include/asm/uaccess.h | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/arch/metag/include/asm/uaccess.h b/arch/metag/include/asm/uaccess.h index c314b45..9627c19 100644 --- a/arch/metag/include/asm/uaccess.h +++ b/arch/metag/include/asm/uaccess.h @@ -107,18 +107,23 @@ extern long __put_user_asm_w(unsigned int x, void __user *addr); extern long __put_user_asm_d(unsigned int x, void __user *addr); extern long __put_user_asm_l(unsigned long long x, void __user *addr); -#define __put_user_size(x, ptr, size, retval) \ -do { \ - retval = 0; \ - switch (size) { \ +#define __put_user_size(x, ptr, size, retval) \ +do { \ + retval = 0; \ + switch (size) { \ case 1: \ - retval = __put_user_asm_b((unsigned int)x, ptr); break; \ + retval = __put_user_asm_b((__force unsigned int)x, ptr);\ + break; \ case 2: \ - retval = __put_user_asm_w((unsigned int)x, ptr); break; \ + retval = __put_user_asm_w((__force unsigned int)x, ptr);\ + break; \ case 4: \ - retval = __put_user_asm_d((unsigned int)x, ptr); break; \ + retval = __put_user_asm_d((__force unsigned int)x, ptr);\ + break; \ case 8: \ - retval = __put_user_asm_l((unsigned long long)x, ptr); break; \ + retval = __put_user_asm_l((__force unsigned long long)x,\ + ptr); \ + break; \ default: \ __put_user_bad(); \ } \ -- MST ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v2 20/40] metag: fix put_user sparse errors 2015-01-06 15:44 ` [PATCH v2 20/40] metag: fix put_user " Michael S. Tsirkin @ 2015-01-07 9:55 ` James Hogan 0 siblings, 0 replies; 5+ messages in thread From: James Hogan @ 2015-01-07 9:55 UTC (permalink / raw) To: Michael S. Tsirkin, linux-kernel; +Cc: Arnd Bergmann, linux-arch, linux-metag [-- Attachment #1: Type: text/plain, Size: 2808 bytes --] On 06/01/15 15:44, Michael S. Tsirkin wrote: > 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. > > This also fixes warnings due to writing a pointer out to > userland. > > Note: this does not suppress any useful sparse checks since callers > do a cast (__typeof__(*(ptr))) (x) which in turn forces all the > necessary type checks. > > Suggested-by: James Hogan <james.hogan@imgtec.com> > Signed-off-by: Michael S. Tsirkin <mst@redhat.com> > --- > arch/metag/include/asm/uaccess.h | 21 +++++++++++++-------- > 1 file changed, 13 insertions(+), 8 deletions(-) > > diff --git a/arch/metag/include/asm/uaccess.h b/arch/metag/include/asm/uaccess.h > index c314b45..9627c19 100644 > --- a/arch/metag/include/asm/uaccess.h > +++ b/arch/metag/include/asm/uaccess.h > @@ -107,18 +107,23 @@ extern long __put_user_asm_w(unsigned int x, void __user *addr); > extern long __put_user_asm_d(unsigned int x, void __user *addr); > extern long __put_user_asm_l(unsigned long long x, void __user *addr); > > -#define __put_user_size(x, ptr, size, retval) \ > -do { \ > - retval = 0; \ > - switch (size) { \ > +#define __put_user_size(x, ptr, size, retval) \ > +do { \ > + retval = 0; \ > + switch (size) { \ On the last 3 lines here you've added a tab after spaces which checkpatch complains about. With that fixed (or converted to tabs properly): Acked-by: James Hogan <james.hogan@imgtec.com> Cheers James > case 1: \ > - retval = __put_user_asm_b((unsigned int)x, ptr); break; \ > + retval = __put_user_asm_b((__force unsigned int)x, ptr);\ > + break; \ > case 2: \ > - retval = __put_user_asm_w((unsigned int)x, ptr); break; \ > + retval = __put_user_asm_w((__force unsigned int)x, ptr);\ > + break; \ > case 4: \ > - retval = __put_user_asm_d((unsigned int)x, ptr); break; \ > + retval = __put_user_asm_d((__force unsigned int)x, ptr);\ > + break; \ > case 8: \ > - retval = __put_user_asm_l((unsigned long long)x, ptr); break; \ > + retval = __put_user_asm_l((__force unsigned long long)x,\ > + ptr); \ > + break; \ > default: \ > __put_user_bad(); \ > } \ > [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 819 bytes --] ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2015-01-07 9:55 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <1420558883-10131-1-git-send-email-mst@redhat.com>
2015-01-06 15:43 ` [PATCH v2 09/40] metag/uaccess: fix sparse errors Michael S. Tsirkin
[not found] ` <1420558883-10131-10-git-send-email-mst-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-01-07 9:47 ` James Hogan
[not found] ` <54AD00AC.2030801-1AXoQHu6uovQT0dZR+AlfA@public.gmane.org>
2015-01-07 9:55 ` Michael S. Tsirkin
2015-01-06 15:44 ` [PATCH v2 20/40] metag: fix put_user " Michael S. Tsirkin
2015-01-07 9:55 ` James Hogan
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox