summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Garlick <garlick@llnl.gov>2012-01-03 15:27:50 -0600
committerEric Van Hensbergen <ericvh@gmail.com>2012-01-05 10:51:44 -0600
commita0ea787b027b79cf2e01c6758e5246db06520158 (patch)
treeb3066e9a557e5add9dc99ee9f763fcf7c3926b5f
parent805a6af8dba5dfdd35ec35dc52ec0122400b2610 (diff)
downloadlinux-3.10-a0ea787b027b79cf2e01c6758e5246db06520158.tar.gz
linux-3.10-a0ea787b027b79cf2e01c6758e5246db06520158.tar.bz2
linux-3.10-a0ea787b027b79cf2e01c6758e5246db06520158.zip
fs/9p: check schedule_timeout_interruptible return value
In v9fs_file_do_lock() we need to check return value of schedule_timeout_interruptible() and exit the loop when it returns nonzero, otherwise the loop is not really interruptible and after the signal, the loop is no longer throttled by P9_LOCK_TIMEOUT. Signed-off-by: Jim Garlick <garlick.jim@gmail.com> Signed-off-by: Eric Van Hensbergen <ericvh@gmail.com>
-rw-r--r--fs/9p/vfs_file.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/9p/vfs_file.c b/fs/9p/vfs_file.c
index 62857a810a7..a7ac45d5bd2 100644
--- a/fs/9p/vfs_file.c
+++ b/fs/9p/vfs_file.c
@@ -204,7 +204,8 @@ static int v9fs_file_do_lock(struct file *filp, int cmd, struct file_lock *fl)
break;
if (status == P9_LOCK_BLOCKED && !IS_SETLKW(cmd))
break;
- schedule_timeout_interruptible(P9_LOCK_TIMEOUT);
+ if (schedule_timeout_interruptible(P9_LOCK_TIMEOUT) != 0)
+ break;
}
/* map 9p status to VFS status */