Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1243265
| From | Ian Abbott <abbotti@mev.co.uk> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH 5/6] staging: comedi: check command started by file being polled |
| Date | 2015-10-09 13:30 +0200 |
| Message-ID | <qhE25-Fi-13@gated-at.bofh.it> (permalink) |
| References | <qhE25-Fi-5@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
Currently, the "poll" file operation checks if an asynchronous "read"
(or "write" command is active on the "read" (or "write" subdevice, but
does not consider whether the command was started from the file object
being polled. Since that is the only file object able to read (or
write) data, take it into consideration.
With this change, if no read (or write) command is running on the
subdevice, or it is started by a different file object, the file object
is marked as readable (or writeable) regardless, but the read (or write)
file operation will return an error.
Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
---
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 4793e30..07bb197 100644
--- a/drivers/staging/comedi/comedi_fops.c
+++ b/drivers/staging/comedi/comedi_fops.c
@@ -2275,7 +2275,7 @@ static unsigned int comedi_poll(struct file *file, poll_table *wait)
s_read = s;
if (s && s->async) {
poll_wait(file, &s->async->wait_head, wait);
- if (!s->busy || !comedi_is_subdevice_running(s) ||
+ if (s->busy != file || !comedi_is_subdevice_running(s) ||
(s->async->cmd.flags & CMDF_WRITE) ||
comedi_buf_read_n_available(s) > 0)
mask |= POLLIN | POLLRDNORM;
@@ -2287,7 +2287,7 @@ static unsigned int comedi_poll(struct file *file, poll_table *wait)
if (s != s_read)
poll_wait(file, &s->async->wait_head, wait);
- if (!s->busy || !comedi_is_subdevice_running(s) ||
+ if (s->busy != file || !comedi_is_subdevice_running(s) ||
!(s->async->cmd.flags & CMDF_WRITE) ||
comedi_buf_write_n_available(s) >= bps)
mask |= POLLOUT | POLLWRNORM;
--
2.6.1
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH 0/6] staging: comedi: fix some minor issues with file poll op Ian Abbott <abbotti@mev.co.uk> - 2015-10-09 13:30 +0200
[PATCH 5/6] staging: comedi: check command started by file being polled Ian Abbott <abbotti@mev.co.uk> - 2015-10-09 13:30 +0200
[PATCH 6/6] staging: comedi: don't use mutex when polling file Ian Abbott <abbotti@mev.co.uk> - 2015-10-09 13:30 +0200
RE: [PATCH 6/6] staging: comedi: don't use mutex when polling file Hartley Sweeten <HartleyS@visionengravers.com> - 2015-10-09 19:30 +0200
[PATCH 1/6] staging: comedi: don't poll_wait on same subdevice twice Ian Abbott <abbotti@mev.co.uk> - 2015-10-09 13:30 +0200
RE: [PATCH 0/6] staging: comedi: fix some minor issues with file poll op Hartley Sweeten <HartleyS@visionengravers.com> - 2015-10-09 19:30 +0200
csiph-web