From 716ff530455c92e4137d70e2f0f2655ca4fb92bc Mon Sep 17 00:00:00 2001 From: Bart Van Assche Date: Thu, 11 Jun 2015 15:46:15 +0000 Subject: [PATCH] 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 --- iscsi-scst/kernel/isert-scst/isert_login.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/iscsi-scst/kernel/isert-scst/isert_login.c b/iscsi-scst/kernel/isert-scst/isert_login.c index cc5cab94d..a8dd27a58 100644 --- a/iscsi-scst/kernel/isert-scst/isert_login.c +++ b/iscsi-scst/kernel/isert-scst/isert_login.c @@ -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; }