fs/9p: check schedule_timeout_interruptible return value
Jim Garlick [Tue, 3 Jan 2012 21:27:50 +0000 (15:27 -0600)]
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>

fs/9p/vfs_file.c

index 62857a8..a7ac45d 100644 (file)
@@ -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 */