On Thursday, October 30, 2014 5:42 AM, Ian Abbott wrote: > If a Comedi asynchronous command has been set up for data transfer in > the "write" direction on the current "read" subdevice (for those > subdevices that support both directions), don't allow the "read" file > operation as that would mess with the data in the comedi data buffer > that is read by the low-level comedi hardware driver. > > Signed-off-by: Ian Abbott <abbo...@mev.co.uk> > --- > drivers/staging/comedi/comedi_fops.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/drivers/staging/comedi/comedi_fops.c > b/drivers/staging/comedi/comedi_fops.c > index fef68da..6805ec9 100644 > --- a/drivers/staging/comedi/comedi_fops.c > +++ b/drivers/staging/comedi/comedi_fops.c > @@ -2210,6 +2210,10 @@ static ssize_t comedi_read(struct file *file, char > __user *buf, size_t nbytes, > retval = -EACCES; > goto out; > } > + if (async->cmd.flags & CMDF_WRITE) { > + retval = -EINVAL; > + goto out; > + } > > add_wait_queue(&async->wait_head, &wait); > while (nbytes > 0 && !retval) { > @@ -2249,6 +2253,10 @@ static ssize_t comedi_read(struct file *file, char > __user *buf, size_t nbytes, > retval = -EACCES; > break; > } > + if (async->cmd.flags & CMDF_WRITE) { > + retval = -EINVAL; > + break; > + }
Is this second test really needed in the while() loop? For that matter, are the s->busy tests needed in the while() loop? > continue; > } > m = copy_to_user(buf, async->prealloc_buf + Regards, Hartley _______________________________________________ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel