mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-14 05:22:19 -04:00
staging: xillybus: Non-interruptible mutex_lock() on release method
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>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
3cbc747946
commit
a983dd5d9b
@@ -1588,7 +1588,6 @@ static int xillybus_open(struct inode *inode, struct file *filp)
|
||||
|
||||
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--;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user