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@xxxxxxxxxxxxxxxxxxx> > Cc: Ian Abbott <abbotti@xxxxxxxxx> > Cc: Mori Hess <fmhess@xxxxxxxxxxxxxxxxxxxxx> > Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> > > --- > > 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 _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/devel