quota: Fix WARN_ON in lookup_one_len
authorJan Kara <jack@suse.cz>
Thu, 12 Nov 2009 14:42:08 +0000 (15:42 +0100)
committerJan Kara <jack@suse.cz>
Thu, 10 Dec 2009 14:02:51 +0000 (15:02 +0100)
We should hold i_mutex when looking up quota files for journaled quotas,
otherwise a WARN_ON in lookup_one_len triggers. The fact that we didn't
hold i_mutex previously probably could not lead to a real bug since the
filesystem is just being mounted / remounted read-write and thus the
root directory cannot change anyway but it's definitely cleaner with
i_mutex.

Reported-by: Bastien ROUCARIES <roucaries.bastien@gmail.com>
Signed-off-by: Jan Kara <jack@suse.cz>
fs/quota/dquot.c

index eb5a755718f6a25542938048793d8884ad73d126..cd6bb9a33c131f3ab2ee5cb7d4654069777f3ad6 100644 (file)
@@ -2164,7 +2164,9 @@ int vfs_quota_on_mount(struct super_block *sb, char *qf_name,
        struct dentry *dentry;
        int error;
 
+       mutex_lock(&sb->s_root->d_inode->i_mutex);
        dentry = lookup_one_len(qf_name, sb->s_root, strlen(qf_name));
+       mutex_unlock(&sb->s_root->d_inode->i_mutex);
        if (IS_ERR(dentry))
                return PTR_ERR(dentry);