staging: xillybus: Non-interruptible mutex_lock() on release method
authorEli Billauer <eli.billauer@gmail.com>
Thu, 4 Sep 2014 14:47:42 +0000 (17:47 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 8 Sep 2014 20:58:18 +0000 (13:58 -0700)
Responding to an interrupt while handling the "release" method can't end
well anyhow. In practical cases, this can force the user to wait up to
one second while flushing remaining data is attempted (a timeout on the flush
mechanism limits the time for flushing).

Suggested-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Eli Billauer <eli.billauer@gmail.com>
Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/xillybus/xillybus_core.c

index 61699fa5127bab30d566224e661edbeb6a116914..3e14198c087f3ebc1a6e24560bac2f52a5cde1a8 100644 (file)
@@ -1588,7 +1588,6 @@ unlock_wr:
 
 static int xillybus_release(struct inode *inode, struct file *filp)
 {
-       int rc;
        unsigned long flags;
        struct xilly_channel *channel = filp->private_data;
 
@@ -1599,13 +1598,7 @@ static int xillybus_release(struct inode *inode, struct file *filp)
                return -EIO;
 
        if (filp->f_mode & FMODE_WRITE) {
-               rc = mutex_lock_interruptible(&channel->rd_mutex);
-
-               if (rc) {
-                       dev_warn(channel->endpoint->dev,
-                                "Failed to close file. Hardware left in messy state.\n");
-                       return rc;
-               }
+               mutex_lock(&channel->rd_mutex);
 
                channel->rd_ref_count--;
 
@@ -1625,12 +1618,7 @@ static int xillybus_release(struct inode *inode, struct file *filp)
        }
 
        if (filp->f_mode & FMODE_READ) {
-               rc = mutex_lock_interruptible(&channel->wr_mutex);
-               if (rc) {
-                       dev_warn(channel->endpoint->dev,
-                                "Failed to close file. Hardware left in messy state.\n");
-                       return rc;
-               }
+               mutex_lock(&channel->wr_mutex);
 
                channel->wr_ref_count--;