diff mbox

asm-generic: Force cast get_user() setting x to 0

Message ID 20170217165229.17768-1-stephen.boyd@linaro.org
State New
Headers show

Commit Message

Stephen Boyd Feb. 17, 2017, 4:52 p.m. UTC
If we call get_user() with an __le* or __be* type sparse will
complain when we assign the result to 0 on the faulting path.
Let's force cast here so that sparse doesn't complain. This
mirrors what we do in __get_user() as well.

Signed-off-by: Stephen Boyd <stephen.boyd@linaro.org>

---

I made a similar fix to arm64 headers, and it looks like asm-generic
would need the same fix.

 include/asm-generic/uaccess.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

-- 
2.10.0.297.gf6727b0

Comments

Stephen Boyd Feb. 25, 2017, 1:24 a.m. UTC | #1
Quoting Stephen Boyd (2017-02-17 08:52:29)
> If we call get_user() with an __le* or __be* type sparse will

> complain when we assign the result to 0 on the faulting path.

> Let's force cast here so that sparse doesn't complain. This

> mirrors what we do in __get_user() as well.

> 

> Signed-off-by: Stephen Boyd <stephen.boyd@linaro.org>

> ---

> 

> I made a similar fix to arm64 headers, and it looks like asm-generic

> would need the same fix.


I suppose we can ignore this. I was using sparse v0.5.0 but it seems
that later versions of sparse don't complain here anymore as Luc has
pointed out.

-Stephen

> 

>  include/asm-generic/uaccess.h | 2 +-

>  1 file changed, 1 insertion(+), 1 deletion(-)

> 

> diff --git a/include/asm-generic/uaccess.h b/include/asm-generic/uaccess.h

> index cc6bb319e464..6352d61df7eb 100644

> --- a/include/asm-generic/uaccess.h

> +++ b/include/asm-generic/uaccess.h

> @@ -227,7 +227,7 @@ extern int __put_user_bad(void) __attribute__((noreturn));

>         might_fault();                                          \

>         access_ok(VERIFY_READ, __p, sizeof(*ptr)) ?             \

>                 __get_user((x), (__typeof__(*(ptr)) *)__p) :    \

> -               ((x) = (__typeof__(*(ptr)))0,-EFAULT);          \

> +               ((x) = (__force __typeof__(*(ptr)))0, -EFAULT); \

>  })

>  

>  #ifndef __get_user_fn
Arnd Bergmann Feb. 27, 2017, 3:52 p.m. UTC | #2
On Sat, Feb 25, 2017 at 2:24 AM, Stephen Boyd <stephen.boyd@linaro.org> wrote:
> Quoting Stephen Boyd (2017-02-17 08:52:29)

>> If we call get_user() with an __le* or __be* type sparse will

>> complain when we assign the result to 0 on the faulting path.

>> Let's force cast here so that sparse doesn't complain. This

>> mirrors what we do in __get_user() as well.

>>

>> Signed-off-by: Stephen Boyd <stephen.boyd@linaro.org>

>> ---

>>

>> I made a similar fix to arm64 headers, and it looks like asm-generic

>> would need the same fix.

>

> I suppose we can ignore this. I was using sparse v0.5.0 but it seems

> that later versions of sparse don't complain here anymore as Luc has

> pointed out.


Ok, thanks for the follow-up.

   Arnd
diff mbox

Patch

diff --git a/include/asm-generic/uaccess.h b/include/asm-generic/uaccess.h
index cc6bb319e464..6352d61df7eb 100644
--- a/include/asm-generic/uaccess.h
+++ b/include/asm-generic/uaccess.h
@@ -227,7 +227,7 @@  extern int __put_user_bad(void) __attribute__((noreturn));
 	might_fault();						\
 	access_ok(VERIFY_READ, __p, sizeof(*ptr)) ?		\
 		__get_user((x), (__typeof__(*(ptr)) *)__p) :	\
-		((x) = (__typeof__(*(ptr)))0,-EFAULT);		\
+		((x) = (__force __typeof__(*(ptr)))0, -EFAULT);	\
 })
 
 #ifndef __get_user_fn