2017-07-13 02:10:48

by Rui Teng

[permalink] [raw]
Subject: [PATCH] stating: lustre: fix sparse error: incompatible types in comparison expression

Comparing two user space addresses to avoid sparse error:

drivers/staging//lustre/lnet/selftest/conrpc.c:490:30: error:
incompatible types in comparison expression (different address spaces)

Signed-off-by: Rui Teng <[email protected]>
---
drivers/staging/lustre/lnet/selftest/conrpc.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/staging/lustre/lnet/selftest/conrpc.c b/drivers/staging/lustre/lnet/selftest/conrpc.c
index da36c55b86d3..ae7c2772825e 100644
--- a/drivers/staging/lustre/lnet/selftest/conrpc.c
+++ b/drivers/staging/lustre/lnet/selftest/conrpc.c
@@ -487,10 +487,9 @@ lstcon_rpc_trans_interpreter(struct lstcon_rpc_trans *trans,
sizeof(struct list_head)))
return -EFAULT;

- if (tmp.next == head_up)
- return 0;
-
next = tmp.next;
+ if (next == head_up)
+ return 0;

ent = list_entry(next, struct lstcon_rpc_ent, rpe_link);

--
2.11.0


2017-07-13 04:29:51

by Oleg Drokin

[permalink] [raw]
Subject: Re: [PATCH] stating: lustre: fix sparse error: incompatible types in comparison expression


On Jul 12, 2017, at 10:10 PM, Rui Teng wrote:

> Comparing two user space addresses to avoid sparse error:
>
> drivers/staging//lustre/lnet/selftest/conrpc.c:490:30: error:
> incompatible types in comparison expression (different address spaces)
>
> Signed-off-by: Rui Teng <[email protected]>
> ---
> drivers/staging/lustre/lnet/selftest/conrpc.c | 5 ++---
> 1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/staging/lustre/lnet/selftest/conrpc.c b/drivers/staging/lustre/lnet/selftest/conrpc.c
> index da36c55b86d3..ae7c2772825e 100644
> --- a/drivers/staging/lustre/lnet/selftest/conrpc.c
> +++ b/drivers/staging/lustre/lnet/selftest/conrpc.c
> @@ -487,10 +487,9 @@ lstcon_rpc_trans_interpreter(struct lstcon_rpc_trans *trans,
> sizeof(struct list_head)))
> return -EFAULT;
>
> - if (tmp.next == head_up)
> - return 0;
> -
> next = tmp.next;

So the assignment is fine, but comparison is not? Strange.

I guess this is fine by me if that makes the warning go away.

Acked-by: Oleg Drokin <[email protected]>

> + if (next == head_up)
> + return 0;
>
> ent = list_entry(next, struct lstcon_rpc_ent, rpe_link);
>
> --
> 2.11.0