On Tuesday, September 18, 2012 11:47 AM, Ian Abbott wrote: > For the COMEDI_DEVCONFIG ioctl, the user application may embed a pointer > to firmware data within a designated element (or two elements for 64-bit > pointers) of the `options[]` array in the `struct comedi_devconfig`. > `do_devconfig_ioctl()` calls `comedi_aux_data()` to extract the pointer > value. It needs to be treated as a `__user` pointer so the firmware > data can be copied into kernel memory, so cast the result of > `comedi_aux_data()` to avoid a "sparse" warning. This is not ideal but > `comedi_aux_data()` is called elsewhere in a wholly kernel memory > context so we can't just change its return type to include the `__user` > tag. > > Signed-off-by: Ian Abbott <abbotti@xxxxxxxxx> > --- > drivers/staging/comedi/comedi_fops.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/staging/comedi/comedi_fops.c b/drivers/staging/comedi/comedi_fops.c > index 7d18325..55722b3 100644 > --- a/drivers/staging/comedi/comedi_fops.c > +++ b/drivers/staging/comedi/comedi_fops.c > @@ -370,7 +370,8 @@ static int do_devconfig_ioctl(struct comedi_device *dev, > return -ENOMEM; > > if (copy_from_user(aux_data, > - comedi_aux_data(it.options, 0), aux_len)) { > + (unsigned char __user * > + )comedi_aux_data(it.options, 0), aux_len)) { > vfree(aux_data); > return -EFAULT; > } Ian, If we "fix" the drivers that still use this, couldn't the "aux_data" usage be deprecated? Then we could just remove the comedi_aux_data() function as well as the related chunk in do_devconfig_ioctl(). The comedi_nonfree_firmware tarball has firmware for 5 drivers: These two are good: daqboard2000 - uses request_firmware() and attach_pci ni_pcidio - uses request_firmware() and attach_pci This one needs converted to attach_pci (this driver is a mess): jr3_pci - uses request_firmware() still uses attach This one is broken and needs fixed: me4000 - uses attach_pci, the firmware upload code is missing This one needs converted to request_firmware() and attach_pci me_daq - uses comedi_aux_data() still uses attach The usbdux, usbduxfast, and usbduxsigma drivers all use request_firmware_nowait() in the usb_driver probe. The comedi_driver for all these have both an attach and attach_usb. The attach functions use comedi_aux_data(), the attach_pci functions are triggered by the completion function of request_firmware_nowait(). It looks like these could be fixed by just dropping the attach method. BTW, where are the firmware files for these drivers? Regards, Hartley _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/devel