Messages in this thread |  | | From | H Hartley Sweeten <> | | Date | Tue, 8 May 2012 18:55:59 -0500 | | Subject | RE: [PATCH] staging: comedi: remove __user annotation inside of struct's |
| |
On Tuesday, May 08, 2012 4:41 PM, H Hartley Sweeten wrote: > > The structs' comedi_insn, coomedi_insnlist, comedi_cmd, > comedi_chaninfo, and comedi_rangeinfo are all passed to > the kernel from user space using ioctl commands. They > are then copied to kernel space using copy_from_user() > before the data is passed to the drivers. > > The __user annotation should not be used with variables > inside the struct. This produces a lot of sparse warnings > like: > > warning: dereference of noderef expression > > Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> > Cc: Ian Abbott <abbotti@mev.co.uk> > Cc: Mori Hess <fmhess@users.sourceforge.net> > Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > > --- > > Note: This patch exposes some new warnings about different > address space. These will be addressed.
Please ignore this patch.
It appears the annotations in the struct definitions are correct.
The initial copy_from_user will only copy the data from the struct __user *arg to the kernel's struct * it doesn't copy the data that the struct variable points to, just the pointer. To get that data another copy_from_user needs to be done.
The sparse warnings above will need to be addressed a different way.
Sorry for the noise.
Regards, Hartley
|  |