Merge r6009 from 3.0.x-iser branch

git-svn-id: http://svn.code.sf.net/p/scst/svn/branches/3.0.x@6253 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
Bart Van Assche
2015-06-11 15:46:15 +00:00
parent a97d0be047
commit 716ff53045

View File

@@ -556,6 +556,9 @@ static ssize_t isert_read(struct file *filp, char __user *buf, size_t count,
struct isert_conn_dev *dev = filp->private_data;
size_t to_read;
if (dev->state == CS_DISCONNECTED)
return -EPIPE;
if (will_read_block(dev)) {
int ret;
if (filp->f_flags & O_NONBLOCK)
@@ -566,9 +569,6 @@ static ssize_t isert_read(struct file *filp, char __user *buf, size_t count,
return ret;
}
if (dev->state == CS_DISCONNECTED)
return -EPIPE;
to_read = min(count, dev->read_len);
if (copy_to_user(buf, dev->read_buf, to_read))
return -EFAULT;
@@ -766,11 +766,13 @@ static unsigned int isert_poll(struct file *filp,
poll_wait(filp, &dev->waitqueue, wait);
if (!dev->conn)
mask |= POLLHUP | POLLERR;
if (!will_read_block(dev))
mask |= POLLIN | POLLRDNORM;
mask |= POLLHUP | POLLIN;
else {
if (!will_read_block(dev))
mask |= POLLIN | POLLRDNORM;
mask |= POLLOUT | POLLWRNORM;
mask |= POLLOUT | POLLWRNORM;
}
return mask;
}