The -EAGAIN status is passed through an "rc" variable instead of a less
common flow.

Suggested-by: Dan Carpenter <dan.carpen...@oracle.com>
Signed-off-by: Eli Billauer <eli.billa...@gmail.com>
---
 drivers/staging/xillybus/xillybus_core.c |   16 +++++++++++-----
 1 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/drivers/staging/xillybus/xillybus_core.c 
b/drivers/staging/xillybus/xillybus_core.c
index 45dbf07..f66ffa7 100644
--- a/drivers/staging/xillybus/xillybus_core.c
+++ b/drivers/staging/xillybus/xillybus_core.c
@@ -833,7 +833,7 @@ static ssize_t xillybus_read(struct file *filp, char __user 
*userbuf,
                        if (ready)
                                goto desperate;
 
-                       bytes_done = -EAGAIN;
+                       rc = -EAGAIN;
                        break;
                }
 
@@ -995,6 +995,9 @@ desperate:
        if (channel->endpoint->fatal_error)
                return -EIO;
 
+       if (rc)
+               return rc;
+
        return bytes_done;
 }
 
@@ -1386,7 +1389,7 @@ static ssize_t xillybus_write(struct file *filp, const 
char __user *userbuf,
                 */
 
                if (filp->f_flags & O_NONBLOCK) {
-                       bytes_done = -EAGAIN;
+                       rc = -EAGAIN;
                        break;
                }
 
@@ -1412,6 +1415,12 @@ static ssize_t xillybus_write(struct file *filp, const 
char __user *userbuf,
                                   &channel->rd_workitem,
                                   XILLY_RX_TIMEOUT);
 
+       if (channel->endpoint->fatal_error)
+               return -EIO;
+
+       if (rc)
+               return rc;
+
        if ((channel->rd_synchronous) && (bytes_done > 0)) {
                rc = xillybus_myflush(filp->private_data, 0); /* No timeout */
 
@@ -1419,9 +1428,6 @@ static ssize_t xillybus_write(struct file *filp, const 
char __user *userbuf,
                        return rc;
        }
 
-       if (channel->endpoint->fatal_error)
-               return -EIO;
-
        return bytes_done;
 }
 
-- 
1.7.2.3

_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to