* [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
* [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 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
* 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
* 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
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