staging: comedi: comedi_fops: cast the cmd->chanlist to the correct address space
authorH Hartley Sweeten <hartleys@visionengravers.com>
Tue, 18 Sep 2012 18:43:52 +0000 (11:43 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 19 Sep 2012 08:36:45 +0000 (09:36 +0100)
commit95bc359f98a077a5cfc34feb0a333d11a4124b1c
tree33a0db6ef152518165b1944dd9675ed8fd266341
parentf8348677b1fffff801d5323db7ccadfdb2b290d0
staging: comedi: comedi_fops: cast the cmd->chanlist to the correct address space

Rename 'chanlist_saver' to 'user_chanlist' to avoid confusion that
it's actually a __user *.

The chanlist pointer in comedi_cmd is still a user space pointer when
the comedi_cmd is copied with copy_from_user() in do_cmd_ioctl() and
do_cmdtest_ioctl(). This pointer needs to be cast when it is saved in
user_chanlist in order to preserve its address space.

The copy_from_user() call to copy the chanlist to the kernel space
comedi_command requires the second parameter to be a __user pointer.
Use the correctly cast user_chanlist instead of cmd->chanlist.

Before the comedi_cmd is copied back to user space, the saved
user_chanlist pointer is restored. Cast the user_chanlist again so
that the address space matches the comedi_cmd.

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>
drivers/staging/comedi/comedi_fops.c