From: Jan Kara Date: Thu, 6 Aug 2009 22:27:27 +0000 (+0200) Subject: udf: Fix possible corruption when close races with write X-Git-Tag: v2.6.32-rc1~699^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=cbc8cc33529b0e0e55ae0ff077b8cb0b71d54c7a;p=platform%2Fkernel%2Flinux-3.10.git udf: Fix possible corruption when close races with write When we close a file, we remove preallocated blocks from it. But this truncation was not protected by i_mutex and thus it could have raced with a write through a different fd and cause crashes or even filesystem corruption. Signed-off-by: Jan Kara --- diff --git a/fs/udf/file.c b/fs/udf/file.c index 7464305..b80cbd7 100644 --- a/fs/udf/file.c +++ b/fs/udf/file.c @@ -193,9 +193,11 @@ int udf_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, static int udf_release_file(struct inode *inode, struct file *filp) { if (filp->f_mode & FMODE_WRITE) { + mutex_lock(&inode->i_mutex); lock_kernel(); udf_discard_prealloc(inode); unlock_kernel(); + mutex_unlock(&inode->i_mutex); } return 0; }