[lustre-devel] [PATCH] drivers: staging/lustre: conrpc.c - fix sparse error: incompatible types in comparison expression (different address spaces)

Tordek kedrot at gmail.com
Thu Jun 1 22:15:39 PDT 2017


On 02/06/17 01:08, Dilger, Andreas wrote:
> On Jun 1, 2017, at 14:56, Tordek <kedrot at gmail.com> wrote:
>> This is fairly minor but it reveals a few hidden warnings, could I get some feedback on it?
> 
> This is a known problem, but can't immediately be fixed because it affects the interface with
> userspace tools.  The correct solution is to not use struct list_head in the user interface
> at all, and we are looking into that.
> 
> In the meantime, feel free to look at the warnings that are now visible after this patch is
> applied (locally on your system).

Well, changing

struct lstcon_rpc_ent *ent;

to

struct lstcon_rpc_ent __user *ent;

makes most of the post-patch warnings disappear (and it... makes sense? we're calling `copy_to_user(&ent...` a lot, so I assume ent would be pointing to userspace memory).

But if this is meant to change, maybe it's a moot point to look at it at all.

Thanks!


> 
> Thanks, Andreas
> 
>> 
>> On 5 May 2017 10:53, "Tordek" <kedrot at gmail.com> wrote:
>> This patch makes a lot of new warnings pop up, because the error is
>> blocking the rest of the file from being processed.
>> 
>> On 5 May 2017 at 10:51, Guillermo O. Freschi <kedrot at gmail.com> wrote:
>>> Signed-off-by: Guillermo O. Freschi <kedrot at gmail.com>
>>> ---
>>> drivers/staging/lustre/lnet/selftest/conrpc.c | 2 +-
>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>> 
>>> diff --git a/drivers/staging/lustre/lnet/selftest/conrpc.c b/drivers/staging/lustre/lnet/selftest/conrpc.c
>>> index da36c55b86d3..f4578200994f 100644
>>> --- a/drivers/staging/lustre/lnet/selftest/conrpc.c
>>> +++ b/drivers/staging/lustre/lnet/selftest/conrpc.c
>>> @@ -487,7 +487,7 @@ lstcon_rpc_trans_interpreter(struct lstcon_rpc_trans *trans,
>>>                                   sizeof(struct list_head)))
>>>                        return -EFAULT;
>>> 
>>> -               if (tmp.next == head_up)
>>> +               if ((struct list_head __user *)tmp.next == head_up)
>>>                        return 0;
>>> 
>>>                next = tmp.next;
>>> --
>>> 2.11.0
>>> 
>> _______________________________________________
>> lustre-devel mailing list
>> lustre-devel at lists.lustre.org
>> http://lists.lustre.org/listinfo.cgi/lustre-devel-lustre.org
> 
> Cheers, Andreas
> --
> Andreas Dilger
> Lustre Principal Architect
> Intel Corporation
> 
> 
> 
> 
> 
> 
> 

--
Tordek


More information about the lustre-devel mailing list