staging: comedi: don't use mutex when polling file
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@mev.co.uk> Reviewed-by: H Hartley Sweeten <hsweeten@visionengravers.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
3834234f99
commit
d5eb3a7421
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue