Skip to content

Commit

Permalink
staging: comedi: comedi.h: remove __user tag from chanlist
Browse files Browse the repository at this point in the history
The 'chanlist' is passed to the kernel from user space with the
COMEDI_CMD and COMEDI_CMDTEST ioctls. The do_cmd_ioctl() and
do_cmdtest_ioctl() functions in comedi_fops.c copy this data
to/from user space to kernel space correctly.

Unfortunately, this data is copied back into a struct comedi_cmd
so when the cmd is passed down to the drivers they still see the
pointer as __user data. This results is a number of sparse errors
such as:

  warning: dereference of noderef expression

  warning: incorrect type in argument 2 (different address spaces)
     expected void const *<noident>
     got unsigned int [noderef] <asn:1>*chanlist

  warning: incorrect type in argument 3 (different address spaces)
     expected unsigned int *chanlist
     got unsigned int [noderef] <asn:1>*chanlist

  warning: incorrect type in assignment (different address spaces)
     expected unsigned int *ai_chanlist
     got unsigned int [noderef] <asn:1>*chanlist

The two functions in comedi_fops are the only ones that need the
__user tag. Remove the tag so that all the drivers see the chanlist
pointer in the correct address space.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Cc: Ian Abbott <abbotti@mev.co.uk>
Acked-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
H Hartley Sweeten authored and Greg Kroah-Hartman committed Sep 19, 2012
1 parent 25b73c7 commit 9be56c6
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion drivers/staging/comedi/comedi.h
Original file line number Diff line number Diff line change
Expand Up @@ -365,7 +365,7 @@ struct comedi_cmd {
unsigned int stop_src;
unsigned int stop_arg;

unsigned int __user *chanlist; /* channel/range list */
unsigned int *chanlist; /* channel/range list */
unsigned int chanlist_len;

short __user *data; /* data list, size depends on subd flags */
Expand Down

0 comments on commit 9be56c6

Please sign in to comment.