2021-02-18 10:15:54

by Atul Gopinathan

[permalink] [raw]
Subject: [PATCH v2 1/2] staging: comedi: cast function output to assigned variable type

Fix the following warning generated by sparse:

drivers/staging//comedi/comedi_fops.c:2956:23: warning: incorrect type in assignment (different address spaces)
drivers/staging//comedi/comedi_fops.c:2956:23: expected unsigned int *chanlist
drivers/staging//comedi/comedi_fops.c:2956:23: got void [noderef] <asn:1> *

compat_ptr() has a return type of "void __user *"
as defined in "include/linux/compat.h"

cmd->chanlist is of type "unsigned int *" as defined
in drivers/staging/comedi/comedi.h" in struct
comedi_cmd.

Signed-off-by: Atul Gopinathan <[email protected]>
---
drivers/staging/comedi/comedi_fops.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/comedi/comedi_fops.c b/drivers/staging/comedi/comedi_fops.c
index e85a99b68f31..fc4ec38012b4 100644
--- a/drivers/staging/comedi/comedi_fops.c
+++ b/drivers/staging/comedi/comedi_fops.c
@@ -2953,7 +2953,7 @@ static int get_compat_cmd(struct comedi_cmd *cmd,
cmd->scan_end_arg = v32.scan_end_arg;
cmd->stop_src = v32.stop_src;
cmd->stop_arg = v32.stop_arg;
- cmd->chanlist = compat_ptr(v32.chanlist);
+ cmd->chanlist = (unsigned int __force *)compat_ptr(v32.chanlist);
cmd->chanlist_len = v32.chanlist_len;
cmd->data = compat_ptr(v32.data);
cmd->data_len = v32.data_len;
--
2.27.0


2021-02-18 10:15:54

by Atul Gopinathan

[permalink] [raw]
Subject: [PATCH v2 2/2] staging: comedi: cast function argument to expected type (void __user *)

Resolve the following sparse warning:

drivers/staging//comedi/comedi_fops.c:2983:41: warning: incorrect type in argument 1 (different address spaces)
drivers/staging//comedi/comedi_fops.c:2983:41: expected void [noderef] <asn:1> *uptr
drivers/staging//comedi/comedi_fops.c:2983:41: got unsigned int *chanlist

cmd->chanlist is of type (unsigned int *) as defined in
"struct comedi_cmd" in file drivers/staging/comedi/comedi.h

The function "ptr_to_compat()" expects argument of type
(void __user *) as defined in include/linux/compat.h

Signed-off-by: Atul Gopinathan <[email protected]>
---
drivers/staging/comedi/comedi_fops.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/comedi/comedi_fops.c b/drivers/staging/comedi/comedi_fops.c
index fc4ec38012b4..8b2672c3c408 100644
--- a/drivers/staging/comedi/comedi_fops.c
+++ b/drivers/staging/comedi/comedi_fops.c
@@ -2980,7 +2980,7 @@ static int put_compat_cmd(struct comedi32_cmd_struct __user *cmd32,
v32.stop_src = cmd->stop_src;
v32.stop_arg = cmd->stop_arg;
/* Assume chanlist pointer is unchanged. */
- v32.chanlist = ptr_to_compat(cmd->chanlist);
+ v32.chanlist = ptr_to_compat((void __user *)cmd->chanlist);
v32.chanlist_len = cmd->chanlist_len;
v32.data = ptr_to_compat(cmd->data);
v32.data_len = cmd->data_len;
--
2.27.0

2021-02-18 12:20:19

by Atul Gopinathan

[permalink] [raw]
Subject: Re: [PATCH v2 1/2] staging: comedi: cast function output to assigned variable type

On Thu, Feb 18, 2021 at 10:31:15AM +0000, Ian Abbott wrote:
> On 18/02/2021 08:44, Atul Gopinathan wrote:
> > Fix the following warning generated by sparse:
> >
> > drivers/staging//comedi/comedi_fops.c:2956:23: warning: incorrect type in assignment (different address spaces)
> > drivers/staging//comedi/comedi_fops.c:2956:23: expected unsigned int *chanlist
> > drivers/staging//comedi/comedi_fops.c:2956:23: got void [noderef] <asn:1> *
> >
> > compat_ptr() has a return type of "void __user *"
> > as defined in "include/linux/compat.h"
> >
> > cmd->chanlist is of type "unsigned int *" as defined
> > in drivers/staging/comedi/comedi.h" in struct
> > comedi_cmd.
> >
> > Signed-off-by: Atul Gopinathan <[email protected]>
> > ---
> > drivers/staging/comedi/comedi_fops.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/staging/comedi/comedi_fops.c b/drivers/staging/comedi/comedi_fops.c
> > index e85a99b68f31..fc4ec38012b4 100644
> > --- a/drivers/staging/comedi/comedi_fops.c
> > +++ b/drivers/staging/comedi/comedi_fops.c
> > @@ -2953,7 +2953,7 @@ static int get_compat_cmd(struct comedi_cmd *cmd,
> > cmd->scan_end_arg = v32.scan_end_arg;
> > cmd->stop_src = v32.stop_src;
> > cmd->stop_arg = v32.stop_arg;
> > - cmd->chanlist = compat_ptr(v32.chanlist);
> > + cmd->chanlist = (unsigned int __force *)compat_ptr(v32.chanlist);
> > cmd->chanlist_len = v32.chanlist_len;
> > cmd->data = compat_ptr(v32.data);
> > cmd->data_len = v32.data_len;
> >
>
> This patch and the other one in your series clash with commit 9d5d041eebe3
> ("staging: comedi: comedi_fops.c: added casts to get rid of sparse
> warnings") by B K Karthik.

Oh I see. Not sure if this is the right place to ask, but which tree and
branch should one work with when messing with the code in staging/
directory? (wanted to avoid such clashes in future)

Thanks,
Atul

2021-02-18 12:47:46

by Ian Abbott

[permalink] [raw]
Subject: Re: [PATCH v2 1/2] staging: comedi: cast function output to assigned variable type

On 18/02/2021 08:44, Atul Gopinathan wrote:
> Fix the following warning generated by sparse:
>
> drivers/staging//comedi/comedi_fops.c:2956:23: warning: incorrect type in assignment (different address spaces)
> drivers/staging//comedi/comedi_fops.c:2956:23: expected unsigned int *chanlist
> drivers/staging//comedi/comedi_fops.c:2956:23: got void [noderef] <asn:1> *
>
> compat_ptr() has a return type of "void __user *"
> as defined in "include/linux/compat.h"
>
> cmd->chanlist is of type "unsigned int *" as defined
> in drivers/staging/comedi/comedi.h" in struct
> comedi_cmd.
>
> Signed-off-by: Atul Gopinathan <[email protected]>
> ---
> drivers/staging/comedi/comedi_fops.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/staging/comedi/comedi_fops.c b/drivers/staging/comedi/comedi_fops.c
> index e85a99b68f31..fc4ec38012b4 100644
> --- a/drivers/staging/comedi/comedi_fops.c
> +++ b/drivers/staging/comedi/comedi_fops.c
> @@ -2953,7 +2953,7 @@ static int get_compat_cmd(struct comedi_cmd *cmd,
> cmd->scan_end_arg = v32.scan_end_arg;
> cmd->stop_src = v32.stop_src;
> cmd->stop_arg = v32.stop_arg;
> - cmd->chanlist = compat_ptr(v32.chanlist);
> + cmd->chanlist = (unsigned int __force *)compat_ptr(v32.chanlist);
> cmd->chanlist_len = v32.chanlist_len;
> cmd->data = compat_ptr(v32.data);
> cmd->data_len = v32.data_len;
>

This patch and the other one in your series clash with commit
9d5d041eebe3 ("staging: comedi: comedi_fops.c: added casts to get rid of
sparse warnings") by B K Karthik.

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9d5d041eebe3dcf7591ff7004896c329eb841ca6

--
-=( Ian Abbott <[email protected]> || MEV Ltd. is a company )=-
-=( registered in England & Wales. Regd. number: 02862268. )=-
-=( Regd. addr.: S11 & 12 Building 67, Europa Business Park, )=-
-=( Bird Hall Lane, STOCKPORT, SK3 0XA, UK. || http://www.mev.co.uk )=-

2021-02-18 14:26:55

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH v2 1/2] staging: comedi: cast function output to assigned variable type

On Thu, Feb 18, 2021 at 04:17:55PM +0530, Atul Gopinathan wrote:
> On Thu, Feb 18, 2021 at 10:31:15AM +0000, Ian Abbott wrote:
> > On 18/02/2021 08:44, Atul Gopinathan wrote:
> > > Fix the following warning generated by sparse:
> > >
> > > drivers/staging//comedi/comedi_fops.c:2956:23: warning: incorrect type in assignment (different address spaces)
> > > drivers/staging//comedi/comedi_fops.c:2956:23: expected unsigned int *chanlist
> > > drivers/staging//comedi/comedi_fops.c:2956:23: got void [noderef] <asn:1> *
> > >
> > > compat_ptr() has a return type of "void __user *"
> > > as defined in "include/linux/compat.h"
> > >
> > > cmd->chanlist is of type "unsigned int *" as defined
> > > in drivers/staging/comedi/comedi.h" in struct
> > > comedi_cmd.
> > >
> > > Signed-off-by: Atul Gopinathan <[email protected]>
> > > ---
> > > drivers/staging/comedi/comedi_fops.c | 2 +-
> > > 1 file changed, 1 insertion(+), 1 deletion(-)
> > >
> > > diff --git a/drivers/staging/comedi/comedi_fops.c b/drivers/staging/comedi/comedi_fops.c
> > > index e85a99b68f31..fc4ec38012b4 100644
> > > --- a/drivers/staging/comedi/comedi_fops.c
> > > +++ b/drivers/staging/comedi/comedi_fops.c
> > > @@ -2953,7 +2953,7 @@ static int get_compat_cmd(struct comedi_cmd *cmd,
> > > cmd->scan_end_arg = v32.scan_end_arg;
> > > cmd->stop_src = v32.stop_src;
> > > cmd->stop_arg = v32.stop_arg;
> > > - cmd->chanlist = compat_ptr(v32.chanlist);
> > > + cmd->chanlist = (unsigned int __force *)compat_ptr(v32.chanlist);
> > > cmd->chanlist_len = v32.chanlist_len;
> > > cmd->data = compat_ptr(v32.data);
> > > cmd->data_len = v32.data_len;
> > >
> >
> > This patch and the other one in your series clash with commit 9d5d041eebe3
> > ("staging: comedi: comedi_fops.c: added casts to get rid of sparse
> > warnings") by B K Karthik.
>
> Oh I see. Not sure if this is the right place to ask, but which tree and
> branch should one work with when messing with the code in staging/
> directory? (wanted to avoid such clashes in future)

staging-next is the best one to use from the staging.git tree. But as
the above commit was merged in 5.9-rc1, way back in July of last year, I
have no idea what tree you are currently using to not hit that...

You should always be able to find the subsystem git trees in the
MAINTAINERS file, or if not, just work off of what is in linux-next as
that should have all subsystem's trees merged into it.

thanks,

greg k-h

2021-02-18 15:08:35

by Atul Gopinathan

[permalink] [raw]
Subject: Re: [PATCH v2 1/2] staging: comedi: cast function output to assigned variable type

On Thu, Feb 18, 2021 at 01:21:05PM +0100, Greg KH wrote:
> On Thu, Feb 18, 2021 at 04:17:55PM +0530, Atul Gopinathan wrote:
> > On Thu, Feb 18, 2021 at 10:31:15AM +0000, Ian Abbott wrote:
> > > On 18/02/2021 08:44, Atul Gopinathan wrote:
> > > > Fix the following warning generated by sparse:
> > > >
> > > > drivers/staging//comedi/comedi_fops.c:2956:23: warning: incorrect type in assignment (different address spaces)
> > > > drivers/staging//comedi/comedi_fops.c:2956:23: expected unsigned int *chanlist
> > > > drivers/staging//comedi/comedi_fops.c:2956:23: got void [noderef] <asn:1> *
> > > >
> > > > compat_ptr() has a return type of "void __user *"
> > > > as defined in "include/linux/compat.h"
> > > >
> > > > cmd->chanlist is of type "unsigned int *" as defined
> > > > in drivers/staging/comedi/comedi.h" in struct
> > > > comedi_cmd.
> > > >
> > > > Signed-off-by: Atul Gopinathan <[email protected]>
> > > > ---
> > > > drivers/staging/comedi/comedi_fops.c | 2 +-
> > > > 1 file changed, 1 insertion(+), 1 deletion(-)
> > > >
> > > > diff --git a/drivers/staging/comedi/comedi_fops.c b/drivers/staging/comedi/comedi_fops.c
> > > > index e85a99b68f31..fc4ec38012b4 100644
> > > > --- a/drivers/staging/comedi/comedi_fops.c
> > > > +++ b/drivers/staging/comedi/comedi_fops.c
> > > > @@ -2953,7 +2953,7 @@ static int get_compat_cmd(struct comedi_cmd *cmd,
> > > > cmd->scan_end_arg = v32.scan_end_arg;
> > > > cmd->stop_src = v32.stop_src;
> > > > cmd->stop_arg = v32.stop_arg;
> > > > - cmd->chanlist = compat_ptr(v32.chanlist);
> > > > + cmd->chanlist = (unsigned int __force *)compat_ptr(v32.chanlist);
> > > > cmd->chanlist_len = v32.chanlist_len;
> > > > cmd->data = compat_ptr(v32.data);
> > > > cmd->data_len = v32.data_len;
> > > >
> > >
> > > This patch and the other one in your series clash with commit 9d5d041eebe3
> > > ("staging: comedi: comedi_fops.c: added casts to get rid of sparse
> > > warnings") by B K Karthik.
> >
> > Oh I see. Not sure if this is the right place to ask, but which tree and
> > branch should one work with when messing with the code in staging/
> > directory? (wanted to avoid such clashes in future)
>
> staging-next is the best one to use from the staging.git tree. But as
> the above commit was merged in 5.9-rc1, way back in July of last year, I
> have no idea what tree you are currently using to not hit that...

I'm using the staging tree alright, cloned it yesterday. Except I used the
--depth parameter. I believe that is the culprit. How bad a mistake is
that?

(Why depth? I'm currently staying in a remote area where internet
download speeds are less than 100Kbps. I tried a normal git clone of
the staging tree and it's estimated time was more than half a day. Not
to mention, it fails due to loss of connection midway every time)

Thanks!
Atul

2021-02-18 16:37:58

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH v2 1/2] staging: comedi: cast function output to assigned variable type

On Thu, Feb 18, 2021 at 06:22:20PM +0530, Atul Gopinathan wrote:
> On Thu, Feb 18, 2021 at 01:21:05PM +0100, Greg KH wrote:
> > On Thu, Feb 18, 2021 at 04:17:55PM +0530, Atul Gopinathan wrote:
> > > On Thu, Feb 18, 2021 at 10:31:15AM +0000, Ian Abbott wrote:
> > > > On 18/02/2021 08:44, Atul Gopinathan wrote:
> > > > > Fix the following warning generated by sparse:
> > > > >
> > > > > drivers/staging//comedi/comedi_fops.c:2956:23: warning: incorrect type in assignment (different address spaces)
> > > > > drivers/staging//comedi/comedi_fops.c:2956:23: expected unsigned int *chanlist
> > > > > drivers/staging//comedi/comedi_fops.c:2956:23: got void [noderef] <asn:1> *
> > > > >
> > > > > compat_ptr() has a return type of "void __user *"
> > > > > as defined in "include/linux/compat.h"
> > > > >
> > > > > cmd->chanlist is of type "unsigned int *" as defined
> > > > > in drivers/staging/comedi/comedi.h" in struct
> > > > > comedi_cmd.
> > > > >
> > > > > Signed-off-by: Atul Gopinathan <[email protected]>
> > > > > ---
> > > > > drivers/staging/comedi/comedi_fops.c | 2 +-
> > > > > 1 file changed, 1 insertion(+), 1 deletion(-)
> > > > >
> > > > > diff --git a/drivers/staging/comedi/comedi_fops.c b/drivers/staging/comedi/comedi_fops.c
> > > > > index e85a99b68f31..fc4ec38012b4 100644
> > > > > --- a/drivers/staging/comedi/comedi_fops.c
> > > > > +++ b/drivers/staging/comedi/comedi_fops.c
> > > > > @@ -2953,7 +2953,7 @@ static int get_compat_cmd(struct comedi_cmd *cmd,
> > > > > cmd->scan_end_arg = v32.scan_end_arg;
> > > > > cmd->stop_src = v32.stop_src;
> > > > > cmd->stop_arg = v32.stop_arg;
> > > > > - cmd->chanlist = compat_ptr(v32.chanlist);
> > > > > + cmd->chanlist = (unsigned int __force *)compat_ptr(v32.chanlist);
> > > > > cmd->chanlist_len = v32.chanlist_len;
> > > > > cmd->data = compat_ptr(v32.data);
> > > > > cmd->data_len = v32.data_len;
> > > > >
> > > >
> > > > This patch and the other one in your series clash with commit 9d5d041eebe3
> > > > ("staging: comedi: comedi_fops.c: added casts to get rid of sparse
> > > > warnings") by B K Karthik.
> > >
> > > Oh I see. Not sure if this is the right place to ask, but which tree and
> > > branch should one work with when messing with the code in staging/
> > > directory? (wanted to avoid such clashes in future)
> >
> > staging-next is the best one to use from the staging.git tree. But as
> > the above commit was merged in 5.9-rc1, way back in July of last year, I
> > have no idea what tree you are currently using to not hit that...
>
> I'm using the staging tree alright, cloned it yesterday. Except I used the
> --depth parameter. I believe that is the culprit. How bad a mistake is
> that?

I do not know, I do not use that option, sorry.

> (Why depth? I'm currently staying in a remote area where internet
> download speeds are less than 100Kbps. I tried a normal git clone of
> the staging tree and it's estimated time was more than half a day. Not
> to mention, it fails due to loss of connection midway every time)

If you already have a copy of the kernel git tree, there is never a need
to download the whole thing again. Just add another remote banch and do
a pull, the difference should be very tiny now compared to what is in
Linus's tree.

Or, to seed the whole thing, download a "git bundle" as described here:
https://www.kernel.org/best-way-to-do-linux-clones-for-your-ci.html
which you can use to work off of locally, and should be easier to handle
over slow and flaky download connections.

hope this helps,

greg k-h

2021-02-18 17:01:53

by Atul Gopinathan

[permalink] [raw]
Subject: Re: [PATCH v2 1/2] staging: comedi: cast function output to assigned variable type

On Thu, Feb 18, 2021 at 02:46:48PM +0100, Greg KH wrote:
> On Thu, Feb 18, 2021 at 06:22:20PM +0530, Atul Gopinathan wrote:
> > On Thu, Feb 18, 2021 at 01:21:05PM +0100, Greg KH wrote:
> > > On Thu, Feb 18, 2021 at 04:17:55PM +0530, Atul Gopinathan wrote:
> > > > On Thu, Feb 18, 2021 at 10:31:15AM +0000, Ian Abbott wrote:
> > > > > On 18/02/2021 08:44, Atul Gopinathan wrote:
> > > > > > Fix the following warning generated by sparse:
> > > > > >
> > > > > > drivers/staging//comedi/comedi_fops.c:2956:23: warning: incorrect type in assignment (different address spaces)
> > > > > > drivers/staging//comedi/comedi_fops.c:2956:23: expected unsigned int *chanlist
> > > > > > drivers/staging//comedi/comedi_fops.c:2956:23: got void [noderef] <asn:1> *
> > > > > >
> > > > > > compat_ptr() has a return type of "void __user *"
> > > > > > as defined in "include/linux/compat.h"
> > > > > >
> > > > > > cmd->chanlist is of type "unsigned int *" as defined
> > > > > > in drivers/staging/comedi/comedi.h" in struct
> > > > > > comedi_cmd.
> > > > > >
> > > > > > Signed-off-by: Atul Gopinathan <[email protected]>
> > > > > > ---
> > > > > > drivers/staging/comedi/comedi_fops.c | 2 +-
> > > > > > 1 file changed, 1 insertion(+), 1 deletion(-)
> > > > > >
> > > > > > diff --git a/drivers/staging/comedi/comedi_fops.c b/drivers/staging/comedi/comedi_fops.c
> > > > > > index e85a99b68f31..fc4ec38012b4 100644
> > > > > > --- a/drivers/staging/comedi/comedi_fops.c
> > > > > > +++ b/drivers/staging/comedi/comedi_fops.c
> > > > > > @@ -2953,7 +2953,7 @@ static int get_compat_cmd(struct comedi_cmd *cmd,
> > > > > > cmd->scan_end_arg = v32.scan_end_arg;
> > > > > > cmd->stop_src = v32.stop_src;
> > > > > > cmd->stop_arg = v32.stop_arg;
> > > > > > - cmd->chanlist = compat_ptr(v32.chanlist);
> > > > > > + cmd->chanlist = (unsigned int __force *)compat_ptr(v32.chanlist);
> > > > > > cmd->chanlist_len = v32.chanlist_len;
> > > > > > cmd->data = compat_ptr(v32.data);
> > > > > > cmd->data_len = v32.data_len;
> > > > > >
> > > > >
> > > > > This patch and the other one in your series clash with commit 9d5d041eebe3
> > > > > ("staging: comedi: comedi_fops.c: added casts to get rid of sparse
> > > > > warnings") by B K Karthik.
> > > >
> > > > Oh I see. Not sure if this is the right place to ask, but which tree and
> > > > branch should one work with when messing with the code in staging/
> > > > directory? (wanted to avoid such clashes in future)
> > >
> > > staging-next is the best one to use from the staging.git tree. But as
> > > the above commit was merged in 5.9-rc1, way back in July of last year, I
> > > have no idea what tree you are currently using to not hit that...
> >
> > I'm using the staging tree alright, cloned it yesterday. Except I used the
> > --depth parameter. I believe that is the culprit. How bad a mistake is
> > that?
>
> I do not know, I do not use that option, sorry.
>
> > (Why depth? I'm currently staying in a remote area where internet
> > download speeds are less than 100Kbps. I tried a normal git clone of
> > the staging tree and it's estimated time was more than half a day. Not
> > to mention, it fails due to loss of connection midway every time)
>
> If you already have a copy of the kernel git tree, there is never a need
> to download the whole thing again. Just add another remote banch and do
> a pull, the difference should be very tiny now compared to what is in
> Linus's tree.
>
> Or, to seed the whole thing, download a "git bundle" as described here:
> https://www.kernel.org/best-way-to-do-linux-clones-for-your-ci.html
> which you can use to work off of locally, and should be easier to handle
> over slow and flaky download connections.
>
> hope this helps,

Oh this is great! Will definitely help me. Thanks a lot!

Regards,
Atul

2021-02-18 18:19:49

by Dan Carpenter

[permalink] [raw]
Subject: Re: [PATCH v2 1/2] staging: comedi: cast function output to assigned variable type

On Thu, Feb 18, 2021 at 06:22:20PM +0530, Atul Gopinathan wrote:
> On Thu, Feb 18, 2021 at 01:21:05PM +0100, Greg KH wrote:
> > On Thu, Feb 18, 2021 at 04:17:55PM +0530, Atul Gopinathan wrote:
> > > On Thu, Feb 18, 2021 at 10:31:15AM +0000, Ian Abbott wrote:
> > > > On 18/02/2021 08:44, Atul Gopinathan wrote:
> > > > > Fix the following warning generated by sparse:
> > > > >
> > > > > drivers/staging//comedi/comedi_fops.c:2956:23: warning: incorrect type in assignment (different address spaces)
> > > > > drivers/staging//comedi/comedi_fops.c:2956:23: expected unsigned int *chanlist
> > > > > drivers/staging//comedi/comedi_fops.c:2956:23: got void [noderef] <asn:1> *
> > > > >
> > > > > compat_ptr() has a return type of "void __user *"
> > > > > as defined in "include/linux/compat.h"
> > > > >
> > > > > cmd->chanlist is of type "unsigned int *" as defined
> > > > > in drivers/staging/comedi/comedi.h" in struct
> > > > > comedi_cmd.
> > > > >
> > > > > Signed-off-by: Atul Gopinathan <[email protected]>
> > > > > ---
> > > > > drivers/staging/comedi/comedi_fops.c | 2 +-
> > > > > 1 file changed, 1 insertion(+), 1 deletion(-)
> > > > >
> > > > > diff --git a/drivers/staging/comedi/comedi_fops.c b/drivers/staging/comedi/comedi_fops.c
> > > > > index e85a99b68f31..fc4ec38012b4 100644
> > > > > --- a/drivers/staging/comedi/comedi_fops.c
> > > > > +++ b/drivers/staging/comedi/comedi_fops.c
> > > > > @@ -2953,7 +2953,7 @@ static int get_compat_cmd(struct comedi_cmd *cmd,
> > > > > cmd->scan_end_arg = v32.scan_end_arg;
> > > > > cmd->stop_src = v32.stop_src;
> > > > > cmd->stop_arg = v32.stop_arg;
> > > > > - cmd->chanlist = compat_ptr(v32.chanlist);
> > > > > + cmd->chanlist = (unsigned int __force *)compat_ptr(v32.chanlist);
> > > > > cmd->chanlist_len = v32.chanlist_len;
> > > > > cmd->data = compat_ptr(v32.data);
> > > > > cmd->data_len = v32.data_len;
> > > > >
> > > >
> > > > This patch and the other one in your series clash with commit 9d5d041eebe3
> > > > ("staging: comedi: comedi_fops.c: added casts to get rid of sparse
> > > > warnings") by B K Karthik.
> > >
> > > Oh I see. Not sure if this is the right place to ask, but which tree and
> > > branch should one work with when messing with the code in staging/
> > > directory? (wanted to avoid such clashes in future)
> >
> > staging-next is the best one to use from the staging.git tree. But as
> > the above commit was merged in 5.9-rc1, way back in July of last year, I
> > have no idea what tree you are currently using to not hit that...
>
> I'm using the staging tree alright, cloned it yesterday. Except I used the
> --depth parameter. I believe that is the culprit. How bad a mistake is
> that?
>
> (Why depth? I'm currently staying in a remote area where internet
> download speeds are less than 100Kbps. I tried a normal git clone of
> the staging tree and it's estimated time was more than half a day. Not
> to mention, it fails due to loss of connection midway every time)

I live in Africa and used to have this problem before Africa got
connected to fibre optic. Greg's suggestion of using `wget -c` to
download a git bundle is a good one. However, in my experience
`wget -c` is not 100% accurate on super flakey internet. Then if it
fails the verify will fail and you'll have to re-download the entire
thing.

If you want I have a different option. What I made a clone of Linus's
tree. Then I did:

tar cvvf linux.tar linux/.git
for i in $(seq 0 116) ; do dd if=linux.tar of=linux.tar.${i} ibs=1M count=20 skip=$((20 * $i)) ; done

Now I have put those on a private webserver I have. You can download
them by doing:

for i in $(seq 0 116) ; do wget -c http://51.158.124.72/kernel_split/linux.tar.${i} ; done
md5sum * > my_md5s
wget http://51.158.124.72/kernel_split/md5sums
diff -u md5sum my_md5s

Re-download files which don't match

for i in $(seq 0 116) ; do cat linux.tar.${i} >> linux.tar ; done
cat linux.tar | tar xv
cd linux
git reset --hard

Let me know if this works for you. I will leave the source up for a
week or two before I delete it.

regards,
dan carpenter

2021-02-18 18:51:17

by Atul Gopinathan

[permalink] [raw]
Subject: Re: [PATCH v2 1/2] staging: comedi: cast function output to assigned variable type

On Thu, Feb 18, 2021 at 06:51:59PM +0300, Dan Carpenter wrote:
> On Thu, Feb 18, 2021 at 06:22:20PM +0530, Atul Gopinathan wrote:
> > On Thu, Feb 18, 2021 at 01:21:05PM +0100, Greg KH wrote:
> > > On Thu, Feb 18, 2021 at 04:17:55PM +0530, Atul Gopinathan wrote:
> > > > On Thu, Feb 18, 2021 at 10:31:15AM +0000, Ian Abbott wrote:
> > > > > On 18/02/2021 08:44, Atul Gopinathan wrote:
> > > > > > Fix the following warning generated by sparse:
> > > > > >
> > > > > > drivers/staging//comedi/comedi_fops.c:2956:23: warning: incorrect type in assignment (different address spaces)
> > > > > > drivers/staging//comedi/comedi_fops.c:2956:23: expected unsigned int *chanlist
> > > > > > drivers/staging//comedi/comedi_fops.c:2956:23: got void [noderef] <asn:1> *
> > > > > >
> > > > > > compat_ptr() has a return type of "void __user *"
> > > > > > as defined in "include/linux/compat.h"
> > > > > >
> > > > > > cmd->chanlist is of type "unsigned int *" as defined
> > > > > > in drivers/staging/comedi/comedi.h" in struct
> > > > > > comedi_cmd.
> > > > > >
> > > > > > Signed-off-by: Atul Gopinathan <[email protected]>
> > > > > > ---
> > > > > > drivers/staging/comedi/comedi_fops.c | 2 +-
> > > > > > 1 file changed, 1 insertion(+), 1 deletion(-)
> > > > > >
> > > > > > diff --git a/drivers/staging/comedi/comedi_fops.c b/drivers/staging/comedi/comedi_fops.c
> > > > > > index e85a99b68f31..fc4ec38012b4 100644
> > > > > > --- a/drivers/staging/comedi/comedi_fops.c
> > > > > > +++ b/drivers/staging/comedi/comedi_fops.c
> > > > > > @@ -2953,7 +2953,7 @@ static int get_compat_cmd(struct comedi_cmd *cmd,
> > > > > > cmd->scan_end_arg = v32.scan_end_arg;
> > > > > > cmd->stop_src = v32.stop_src;
> > > > > > cmd->stop_arg = v32.stop_arg;
> > > > > > - cmd->chanlist = compat_ptr(v32.chanlist);
> > > > > > + cmd->chanlist = (unsigned int __force *)compat_ptr(v32.chanlist);
> > > > > > cmd->chanlist_len = v32.chanlist_len;
> > > > > > cmd->data = compat_ptr(v32.data);
> > > > > > cmd->data_len = v32.data_len;
> > > > > >
> > > > >
> > > > > This patch and the other one in your series clash with commit 9d5d041eebe3
> > > > > ("staging: comedi: comedi_fops.c: added casts to get rid of sparse
> > > > > warnings") by B K Karthik.
> > > >
> > > > Oh I see. Not sure if this is the right place to ask, but which tree and
> > > > branch should one work with when messing with the code in staging/
> > > > directory? (wanted to avoid such clashes in future)
> > >
> > > staging-next is the best one to use from the staging.git tree. But as
> > > the above commit was merged in 5.9-rc1, way back in July of last year, I
> > > have no idea what tree you are currently using to not hit that...
> >
> > I'm using the staging tree alright, cloned it yesterday. Except I used the
> > --depth parameter. I believe that is the culprit. How bad a mistake is
> > that?
> >
> > (Why depth? I'm currently staying in a remote area where internet
> > download speeds are less than 100Kbps. I tried a normal git clone of
> > the staging tree and it's estimated time was more than half a day. Not
> > to mention, it fails due to loss of connection midway every time)
>
> I live in Africa and used to have this problem before Africa got
> connected to fibre optic. Greg's suggestion of using `wget -c` to
> download a git bundle is a good one. However, in my experience
> `wget -c` is not 100% accurate on super flakey internet. Then if it
> fails the verify will fail and you'll have to re-download the entire
> thing.
>
> If you want I have a different option. What I made a clone of Linus's
> tree. Then I did:
>
> tar cvvf linux.tar linux/.git
> for i in $(seq 0 116) ; do dd if=linux.tar of=linux.tar.${i} ibs=1M count=20 skip=$((20 * $i)) ; done
>
> Now I have put those on a private webserver I have. You can download
> them by doing:
>
> for i in $(seq 0 116) ; do wget -c http://51.158.124.72/kernel_split/linux.tar.${i} ; done
> md5sum * > my_md5s
> wget http://51.158.124.72/kernel_split/md5sums
> diff -u md5sum my_md5s
>
> Re-download files which don't match
>
> for i in $(seq 0 116) ; do cat linux.tar.${i} >> linux.tar ; done
> cat linux.tar | tar xv
> cd linux
> git reset --hard
>
> Let me know if this works for you. I will leave the source up for a
> week or two before I delete it.

Hi Dan!
That's a great work you did there. Thank you for trying to help,
really appreciate it. :D

As of now, I digged into my old backup partitions and found an image
of an ubuntu VM that I used to mess with linux source a couple of weeks
ago and luckily I had a clone of both linux-mainline and linux-next
trees in it. So I have updated those and using them currently.

My internet problems are temporary, as I will move back to my original
location, which has good internet speeds, next month.

Again, thank you for trying to help me! I will definitely contact you
if I ever need them. :D

Regards,
Atul

2021-02-19 06:58:49

by Dan Carpenter

[permalink] [raw]
Subject: Re: [PATCH v2 1/2] staging: comedi: cast function output to assigned variable type

No problem. These days I have fibre to my house, but I still remember
trying to clone the kernel when I could only buy 20MB of data at a
time. :P

regards,
dan carpenter

2021-02-19 07:44:29

by Atul Gopinathan

[permalink] [raw]
Subject: Re: [PATCH v2 1/2] staging: comedi: cast function output to assigned variable type

On Fri, Feb 19, 2021 at 09:55:14AM +0300, Dan Carpenter wrote:
> No problem. These days I have fibre to my house, but I still remember
> trying to clone the kernel when I could only buy 20MB of data at a
> time. :P

Whoaa, that's tough! Respect to you for still trying to contribute
to the kernel. Hope no one gets such a situation. :D

Regards,
Atul