• H Hartley Sweeten's avatar
    staging: comedi: comedi.h: remove __user tag from chanlist · 9be56c64
    H Hartley Sweeten authored
    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: default avatarH Hartley Sweeten <hsweeten@visionengravers.com>
    Cc: Ian Abbott <abbotti@mev.co.uk>
    Acked-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    9be56c64
comedi.h 29.3 KB