mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-02-01 16:44:26 +00:00
Staging: comedi: don't write to buffer if command finished
For write(), any data copied to the data buffer after the previously set up streaming acquisition command has finished won't be used, but a non-empty write() does not currently return 0 (or -EPIPE on error) after the command has finished until the data buffer has been filled up. Change this behavior to return 0 (or -EPIPE) any time after the command has finished, without bothering to fill up the buffer with more useless data. Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
ee4063fa6b
commit
d261154057
@ -1576,6 +1576,19 @@ static ssize_t comedi_write(struct file *file, const char __user *buf,
|
||||
while (nbytes > 0 && !retval) {
|
||||
set_current_state(TASK_INTERRUPTIBLE);
|
||||
|
||||
if (!(comedi_get_subdevice_runflags(s) & SRF_RUNNING)) {
|
||||
if (count == 0) {
|
||||
if (comedi_get_subdevice_runflags(s) &
|
||||
SRF_ERROR) {
|
||||
retval = -EPIPE;
|
||||
} else {
|
||||
retval = 0;
|
||||
}
|
||||
do_become_nonbusy(dev, s);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
n = nbytes;
|
||||
|
||||
m = n;
|
||||
@ -1588,16 +1601,6 @@ static ssize_t comedi_write(struct file *file, const char __user *buf,
|
||||
n = m;
|
||||
|
||||
if (n == 0) {
|
||||
if (!(comedi_get_subdevice_runflags(s) & SRF_RUNNING)) {
|
||||
if (comedi_get_subdevice_runflags(s) &
|
||||
SRF_ERROR) {
|
||||
retval = -EPIPE;
|
||||
} else {
|
||||
retval = 0;
|
||||
}
|
||||
do_become_nonbusy(dev, s);
|
||||
break;
|
||||
}
|
||||
if (file->f_flags & O_NONBLOCK) {
|
||||
retval = -EAGAIN;
|
||||
break;
|
||||
|
Loading…
x
Reference in New Issue
Block a user