2014-06-14 05:04:53

by Seunghun Lee

[permalink] [raw]
Subject: [PATCH] staging: ced1401: fix sparse warning for ced1401

This patch fixes below warning.

drivers/staging/ced1401/ced_ioc.c:703:30: warning: incorrect type in assignment (different address spaces)
drivers/staging/ced1401/ced_ioc.c:703:30: expected void *[usertype] lpvBuff
drivers/staging/ced1401/ced_ioc.c:703:30: got char [noderef] <asn:1>*puBuf

Signed-off-by: Seunghun Lee <[email protected]>
---
drivers/staging/ced1401/ced_ioc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/ced1401/ced_ioc.c b/drivers/staging/ced1401/ced_ioc.c
index ebbc509..963b941 100644
--- a/drivers/staging/ced1401/ced_ioc.c
+++ b/drivers/staging/ced1401/ced_ioc.c
@@ -700,7 +700,7 @@ static int SetArea(DEVICE_EXTENSION *pdx, int nArea, char __user *puBuf,
/* kmap() or kmap_atomic() to get a virtual address. page_address will give you */
/* (null) or at least it does in this context with an x86 machine. */
spin_lock_irq(&pdx->stagedLock);
- pTA->lpvBuff = puBuf; /* keep start of region (user address) */
+ pTA->lpvBuff = (__force void *)puBuf; /* keep start of region (user address) */
pTA->dwBaseOffset = ulOffset; /* save offset in first page to start of xfer */
pTA->dwLength = dwLength; /* Size if the region in bytes */
pTA->pPages = pPages; /* list of pages that are used by buffer */
--
1.7.9.5


2014-06-14 14:35:38

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH] staging: ced1401: fix sparse warning for ced1401

On Sat, Jun 14, 2014 at 02:04:38PM +0900, Seunghun Lee wrote:
> This patch fixes below warning.
>
> drivers/staging/ced1401/ced_ioc.c:703:30: warning: incorrect type in assignment (different address spaces)
> drivers/staging/ced1401/ced_ioc.c:703:30: expected void *[usertype] lpvBuff
> drivers/staging/ced1401/ced_ioc.c:703:30: got char [noderef] <asn:1>*puBuf
>
> Signed-off-by: Seunghun Lee <[email protected]>
> ---
> drivers/staging/ced1401/ced_ioc.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/staging/ced1401/ced_ioc.c b/drivers/staging/ced1401/ced_ioc.c
> index ebbc509..963b941 100644
> --- a/drivers/staging/ced1401/ced_ioc.c
> +++ b/drivers/staging/ced1401/ced_ioc.c
> @@ -700,7 +700,7 @@ static int SetArea(DEVICE_EXTENSION *pdx, int nArea, char __user *puBuf,
> /* kmap() or kmap_atomic() to get a virtual address. page_address will give you */
> /* (null) or at least it does in this context with an x86 machine. */
> spin_lock_irq(&pdx->stagedLock);
> - pTA->lpvBuff = puBuf; /* keep start of region (user address) */
> + pTA->lpvBuff = (__force void *)puBuf; /* keep start of region (user address) */

It's usually not good to use __force unless you have to. Can't you fix
the type of the variable instead?

thanks,

greg k-h

2014-06-16 08:17:21

by Dan Carpenter

[permalink] [raw]
Subject: Re: [PATCH] staging: ced1401: fix sparse warning for ced1401

On Sat, Jun 14, 2014 at 02:04:38PM +0900, Seunghun Lee wrote:
> This patch fixes below warning.
>
> drivers/staging/ced1401/ced_ioc.c:703:30: warning: incorrect type in assignment (different address spaces)
> drivers/staging/ced1401/ced_ioc.c:703:30: expected void *[usertype] lpvBuff
> drivers/staging/ced1401/ced_ioc.c:703:30: got char [noderef] <asn:1>*puBuf
>
> Signed-off-by: Seunghun Lee <[email protected]>

No. This silences the warning by disabling Sparse.

Fix the annotations instead.

regards,
dan carpenter

2014-06-19 05:14:16

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH] staging: ced1401: fix sparse warning for ced1401

On Sat, Jun 14, 2014 at 02:04:38PM +0900, Seunghun Lee wrote:
> This patch fixes below warning.
>
> drivers/staging/ced1401/ced_ioc.c:703:30: warning: incorrect type in assignment (different address spaces)
> drivers/staging/ced1401/ced_ioc.c:703:30: expected void *[usertype] lpvBuff
> drivers/staging/ced1401/ced_ioc.c:703:30: got char [noderef] <asn:1>*puBuf
>
> Signed-off-by: Seunghun Lee <[email protected]>
> ---
> drivers/staging/ced1401/ced_ioc.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/staging/ced1401/ced_ioc.c b/drivers/staging/ced1401/ced_ioc.c
> index ebbc509..963b941 100644
> --- a/drivers/staging/ced1401/ced_ioc.c
> +++ b/drivers/staging/ced1401/ced_ioc.c
> @@ -700,7 +700,7 @@ static int SetArea(DEVICE_EXTENSION *pdx, int nArea, char __user *puBuf,
> /* kmap() or kmap_atomic() to get a virtual address. page_address will give you */
> /* (null) or at least it does in this context with an x86 machine. */
> spin_lock_irq(&pdx->stagedLock);
> - pTA->lpvBuff = puBuf; /* keep start of region (user address) */
> + pTA->lpvBuff = (__force void *)puBuf; /* keep start of region (user address) */

Shouldn't you change the type of lpvBuff instead of having to force this
cast?

thanks,

greg k-h