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