Re: [lustre-devel] [PATCH] staging: lustre: Fix a spatch warning due to an assignment from kernel to user space

2016-12-07 Thread James Simmons

> > On 12/07/2016 04:33 PM, Dan Carpenter wrote:
> > >Lustre is kind of a mess with regards to keeping user and kernel
> > >pointers separate.  It's not going to be easy to fix.
> > Fair enough.
> > I am trying to make a contribution to drivers/staging using sparse.
> > With that in mind, do you still fill I should keep clear of lustre?
> > I feel that actually doing the work properly could be a meaningful
> > learning experience.
> 
> It's just that you're the fifth person to look at lustre __user
> annotations and it doesn't end well.  You need to be a lustre expert
> who can test things.
> 
> But for other lustre things, feel free.

Actually we are working to fix this issue. We are working on a 
process that lustre patch posted here get sucked up and put
into our test harness automatically. It needs more love but its
coming along.
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [lustre-devel] [PATCH] staging: lustre: Fix a spatch warning due to an assignment from kernel to user space

2016-12-07 Thread Dan Carpenter
On Wed, Dec 07, 2016 at 04:42:30PM +0100, Quentin Lambert wrote:
> 
> 
> On 12/07/2016 04:33 PM, Dan Carpenter wrote:
> >Lustre is kind of a mess with regards to keeping user and kernel
> >pointers separate.  It's not going to be easy to fix.
> Fair enough.
> I am trying to make a contribution to drivers/staging using sparse.
> With that in mind, do you still fill I should keep clear of lustre?
> I feel that actually doing the work properly could be a meaningful
> learning experience.

It's just that you're the fifth person to look at lustre __user
annotations and it doesn't end well.  You need to be a lustre expert
who can test things.

But for other lustre things, feel free.

regards,
dan carpenter

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [lustre-devel] [PATCH] staging: lustre: Fix a spatch warning due to an assignment from kernel to user space

2016-12-07 Thread Oleg Drokin

On Dec 7, 2016, at 10:20 AM, Quentin Lambert wrote:

> Hi all,
> 
> I am looking at the drivers/staging/lustre/lustre/llite/dir.c:
> 
> 1469 /* Call mdc_iocontrol */
> 1470 rc = obd_iocontrol(LL_IOC_FID2MDTIDX, exp, sizeof(fid), 
> ,
> 1471);
> 1472 if (rc)
> 
> and sparse says:
> 
> drivers/staging/lustre/lustre/llite/dir.c:1471:37: warning: incorrect type in 
> argument 5 (different address spaces)
> 
> I was wondering if there was any value to add a cast to fix the warning?

These's a sister warning to this one, btw, in
drivers/staging/lustre/lustre/lmv/lmv_obd.c:996:19: warning: cast removes 
address space of expression

It is an ugly kludge and I guess needs to just be reworked somehow instead to 
avoid
these ugly games.

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [lustre-devel] [PATCH] staging: lustre: Fix a spatch warning due to an assignment from kernel to user space

2016-12-07 Thread Oleg Drokin

On Dec 7, 2016, at 10:33 AM, Dan Carpenter wrote:

> Lustre is kind of a mess with regards to keeping user and kernel
> pointers separate.  It's not going to be easy to fix.

Actually I believe I made significant inroads in properly cleaning (almost?) 
everything
in this area about a year ago (to the point that only false positives were 
left).
I guess some more stuff crept in, I'll just make another run through and see
what else I can improve.
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [lustre-devel] [PATCH] staging: lustre: Fix a spatch warning due to an assignment from kernel to user space

2016-12-07 Thread Quentin Lambert



On 12/07/2016 04:33 PM, Dan Carpenter wrote:

Lustre is kind of a mess with regards to keeping user and kernel
pointers separate.  It's not going to be easy to fix.

Fair enough.
I am trying to make a contribution to drivers/staging using sparse.
With that in mind, do you still fill I should keep clear of lustre?
I feel that actually doing the work properly could be a meaningful
learning experience.

I start to understand now, that what I was proposing before was
more of a hack than a solution and would have resulted in hiding
meaningful infos.

Quentin

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [lustre-devel] [PATCH] staging: lustre: Fix a spatch warning due to an assignment from kernel to user space

2016-12-07 Thread Dan Carpenter
Lustre is kind of a mess with regards to keeping user and kernel
pointers separate.  It's not going to be easy to fix.

regards,
dan carpenter

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [lustre-devel] [PATCH] staging: lustre: Fix a spatch warning due to an assignment from kernel to user space

2016-12-07 Thread Dan Carpenter
On Wed, Dec 07, 2016 at 04:20:06PM +0100, Quentin Lambert wrote:
> Hi all,
> 
> I am looking at the drivers/staging/lustre/lustre/llite/dir.c:
> 
> 1469 /* Call mdc_iocontrol */
> 1470 rc = obd_iocontrol(LL_IOC_FID2MDTIDX, exp,
> sizeof(fid), ,
> 1471);
> 1472 if (rc)
> 
> and sparse says:
> 
> drivers/staging/lustre/lustre/llite/dir.c:1471:37: warning:
> incorrect type in argument 5 (different address spaces)
> 
> I was wondering if there was any value to add a cast to fix the warning?
> And I guess this solution would also apply in my original patch to
> 
> drivers/staging/lustre/lnet/lnet/lib-socket.c

Just leave these alone until someone can come clean it up properly.

Warnings are good!  People have spent years and years to create
programs to print warnings.  Don't silence the warning by adding a cast.
The warning means show that the code is dangerous.

regards,
dan carpenter

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [lustre-devel] [PATCH] staging: lustre: Fix a spatch warning due to an assignment from kernel to user space

2016-12-07 Thread Quentin Lambert

Hi all,

I am looking at the drivers/staging/lustre/lustre/llite/dir.c:

1469 /* Call mdc_iocontrol */
1470 rc = obd_iocontrol(LL_IOC_FID2MDTIDX, exp, 
sizeof(fid), ,

1471);
1472 if (rc)

and sparse says:

drivers/staging/lustre/lustre/llite/dir.c:1471:37: warning: incorrect 
type in argument 5 (different address spaces)


I was wondering if there was any value to add a cast to fix the warning?
And I guess this solution would also apply in my original patch to

drivers/staging/lustre/lnet/lnet/lib-socket.c

Quentin
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [lustre-devel] [PATCH] staging: lustre: Fix a spatch warning due to an assignment from kernel to user space

2016-12-06 Thread Quentin Lambert



On 12/05/2016 11:58 PM, Oleg Drokin wrote:

I guess it's a false positive?

Yes, probably.

Thank you for the explanation though, I don't fully understand all this yet,
I am still learning.

Sorry for the noise.

Quentin
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [lustre-devel] [PATCH] staging: lustre: Fix a spatch warning due to an assignment from kernel to user space

2016-12-05 Thread Oleg Drokin

On Dec 2, 2016, at 12:33 PM, Quentin Lambert wrote:

> lnet_ipif_enumerate was assigning a pointer from kernel space to user
> space. This patch uses copy_to_user to properly do that assignment.

I guess it's a false positive?

While lnet_sock_ioctl()->kernel_sock_unlocked_ioctl() does call into the
f_op->unlocked_ioctl() with a userspace argument, note that we have
set_fs(KERNEL_DS); in there, therefore allowig copy_from_user
and friends to work on kernel data too as if it was userspace.
(I know it's ugly and we need to find a better way of getting this data,
but at least it's not incorrect).

> 
> Signed-off-by: Quentin Lambert 
> ---
> shouldn't we be using ifc_req instead of ifc_buf?
> 
> drivers/staging/lustre/lnet/lnet/lib-socket.c |8 +++-
> 1 file changed, 7 insertions(+), 1 deletion(-)
> 
> --- a/drivers/staging/lustre/lnet/lnet/lib-socket.c
> +++ b/drivers/staging/lustre/lnet/lnet/lib-socket.c
> @@ -181,7 +181,13 @@ lnet_ipif_enumerate(char ***namesp)
>   goto out0;
>   }
> 
> - ifc.ifc_buf = (char *)ifr;
> + rc = copy_to_user(ifc.ifc_buf, (char *)ifr,
> +   nalloc * sizeof(*ifr));
> + if (rc) {
> + rc = -ENOMEM;
> + goto out1;
> + }
> +
>   ifc.ifc_len = nalloc * sizeof(*ifr);
> 
>   rc = lnet_sock_ioctl(SIOCGIFCONF, (unsigned long));
> ___
> lustre-devel mailing list
> lustre-de...@lists.lustre.org
> http://lists.lustre.org/listinfo.cgi/lustre-devel-lustre.org

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel