On Friday, October 09, 2015 4:27 AM, Ian Abbott wrote: > The main mutex in a comedi device can get held for quite a while when > processing comedi instructions, so for performance reasons, the "read" > and "write" file operations do not use it; they use use the > `attach_lock` rwsemaphore to protect against the comedi device becoming > detached at an inopportune moment. Do the same for the "poll" file > operation. > > Signed-off-by: Ian Abbott <abbotti@xxxxxxxxx> > --- > drivers/staging/comedi/comedi_fops.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/staging/comedi/comedi_fops.c b/drivers/staging/comedi/comedi_fops.c > index 07bb197..88e9334 100644 > --- a/drivers/staging/comedi/comedi_fops.c > +++ b/drivers/staging/comedi/comedi_fops.c > @@ -2264,7 +2264,7 @@ static unsigned int comedi_poll(struct file *file, poll_table *wait) > struct comedi_device *dev = cfp->dev; > struct comedi_subdevice *s, *s_read; > > - mutex_lock(&dev->mutex); > + down_read(&dev->attach_lock); > > if (!dev->attached) { > dev_dbg(dev->class_dev, "no driver attached\n"); > @@ -2294,7 +2294,7 @@ static unsigned int comedi_poll(struct file *file, poll_table *wait) > } > > done: > - mutex_unlock(&dev->mutex); > + up_read(&dev->attach_lock); > return mask; > } Ian, No issues with this patch, just a comment: checkpatch.pl reports some issue about the spinlock_t and mutex definitions in comedidev.h: CHECK: spinlock_t definition without comment #177: FILE: drivers/staging/comedi/comedidev.h:177: + spinlock_t spin_lock; CHECK: spinlock_t definition without comment #540: FILE: drivers/staging/comedi/comedidev.h:540: + spinlock_t spinlock; CHECK: struct mutex definition without comment #541: FILE: drivers/staging/comedi/comedidev.h:541: + struct mutex mutex; I know these are documented in the docbook comment for the structs but would you mind adding some comments to the definitions to quiet checkpatch.pl? Thanks, Hartley _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel