2016-01-12 21:38:22

by Anna Schumaker

[permalink] [raw]
Subject: [PATCH] NFS: Close a race in nfs42_proc_deallocate()

We need to take the i_mutex before writing back the inode to ensure that
the file doesn't change before calling DEALLOCATE.

Signed-off-by: Anna Schumaker <[email protected]>
---
fs/nfs/nfs42proc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/nfs/nfs42proc.c b/fs/nfs/nfs42proc.c
index 6e81749..10d8eb4 100644
--- a/fs/nfs/nfs42proc.c
+++ b/fs/nfs/nfs42proc.c
@@ -122,8 +122,8 @@ int nfs42_proc_deallocate(struct file *filep, loff_t offset, loff_t len)
if (!nfs_server_capable(inode, NFS_CAP_DEALLOCATE))
return -EOPNOTSUPP;

- nfs_wb_all(inode);
mutex_lock(&inode->i_mutex);
+ nfs_wb_all(inode);

err = nfs42_proc_fallocate(&msg, filep, offset, len);
if (err == 0)
--
2.7.0