From: Ian Abbott <abbotti@mev.co.uk>
To: devel@driverdev.osuosl.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Ian Abbott <abbotti@mev.co.uk>,
H Hartley Sweeten <hsweeten@visionengravers.com>,
linux-kernel@vger.kernel.org
Subject: [PATCH 5/8] staging: comedi: COMEDI_BUFINFO: return error if no active command
Date: Fri, 19 Feb 2016 16:13:54 +0000 [thread overview]
Message-ID: <1455898437-4640-6-git-send-email-abbotti@mev.co.uk> (raw)
In-Reply-To: <1455898437-4640-1-git-send-email-abbotti@mev.co.uk>
The `COMEDI_BUFINFO` ioctl is used to advance the current position in
the buffer and/or get the current buffer position. If no asynchronous
command is active (started via the file object that issued this ioctl),
this information is meaningless. Change it to return an error
(`-EINVAL`) in this case. Prior to this change, if a command was
started via a different file object, the ioctl returned `-EACCES`, but
now it will return `-EINVAL`, which is consistent with the current
behavior of the "read" and "write" file operation handlers.
Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
---
drivers/staging/comedi/comedi_fops.c | 22 ++--------------------
1 file changed, 2 insertions(+), 20 deletions(-)
diff --git a/drivers/staging/comedi/comedi_fops.c b/drivers/staging/comedi/comedi_fops.c
index b7c9270..a9fabf7 100644
--- a/drivers/staging/comedi/comedi_fops.c
+++ b/drivers/staging/comedi/comedi_fops.c
@@ -1123,24 +1123,8 @@ static int do_bufinfo_ioctl(struct comedi_device *dev,
async = s->async;
- if (!async) {
- dev_dbg(dev->class_dev,
- "subdevice does not have async capability\n");
- bi.buf_write_ptr = 0;
- bi.buf_read_ptr = 0;
- bi.buf_write_count = 0;
- bi.buf_read_count = 0;
- bi.bytes_read = 0;
- bi.bytes_written = 0;
- goto copyback;
- }
- if (!s->busy) {
- bi.bytes_read = 0;
- bi.bytes_written = 0;
- goto copyback_position;
- }
- if (s->busy != file)
- return -EACCES;
+ if (!async || s->busy != file)
+ return -EINVAL;
if (!(async->cmd.flags & CMDF_WRITE)) {
/* command was set up in "read" direction */
@@ -1165,7 +1149,6 @@ static int do_bufinfo_ioctl(struct comedi_device *dev,
bi.bytes_read = 0;
}
-copyback_position:
bi.buf_write_count = async->buf_write_count;
bi.buf_write_ptr = async->buf_write_ptr;
bi.buf_read_count = async->buf_read_count;
@@ -1174,7 +1157,6 @@ copyback_position:
if (become_nonbusy)
do_become_nonbusy(dev, s);
-copyback:
if (copy_to_user(arg, &bi, sizeof(bi)))
return -EFAULT;
--
2.7.0
next prev parent reply other threads:[~2016-02-19 16:15 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-19 16:13 staging: comedi: COMEDI_BUFINFO: some behavioural changes Ian Abbott
2016-02-19 16:13 ` [PATCH 1/8] staging: comedi: COMEDI_BUFINFO: get amount freed, not amount allocated Ian Abbott
2016-02-19 16:13 ` [PATCH 2/8] staging: comedi: COMEDI_BUFINFO: force bytes_read or bytes_written to 0 Ian Abbott
2016-02-19 16:13 ` [PATCH 3/8] staging: comedi: COMEDI_BUFINFO: update buffer before becoming non-busy Ian Abbott
2016-02-19 16:13 ` [PATCH 4/8] staging: comedi: COMEDI_BUFINFO: force bytes_written to 0 if stopped Ian Abbott
2016-02-19 16:13 ` Ian Abbott [this message]
2016-02-19 16:13 ` [PATCH 6/8] staging: comedi: COMEDI_BUFINFO: become non-busy even if bytes_read is 0 Ian Abbott
2016-02-19 16:13 ` [PATCH 7/8] staging: comedi: COMEDI_BUFINFO: return -EPIPE for abnormal read Ian Abbott
2016-02-19 16:13 ` [PATCH 8/8] staging: comedi: COMEDI_BUFINFO: terminate "write" command when stopped Ian Abbott
2016-02-19 16:19 ` staging: comedi: COMEDI_BUFINFO: some behavioural changes Ian Abbott
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1455898437-4640-6-git-send-email-abbotti@mev.co.uk \
--to=abbotti@mev.co.uk \
--cc=devel@driverdev.osuosl.org \
--cc=gregkh@linuxfoundation.org \
--cc=hsweeten@visionengravers.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®