diff options
author | Jan Kara <jack@suse.cz> | 2009-11-12 09:42:08 -0500 |
---|---|---|
committer | Jan Kara <jack@suse.cz> | 2009-12-10 09:02:51 -0500 |
commit | c56818d7dc976a7392be82e8e04fe26347d591f3 (patch) | |
tree | 28c40dcb53198dc6870bb75b0250458579ade727 /fs/quota/dquot.c | |
parent | 1472da5fdc65f0cd286c655758d629346001e126 (diff) |
quota: Fix WARN_ON in lookup_one_len
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>
Diffstat (limited to 'fs/quota/dquot.c')
-rw-r--r-- | fs/quota/dquot.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/quota/dquot.c b/fs/quota/dquot.c index eb5a755718f6..cd6bb9a33c13 100644 --- a/fs/quota/dquot.c +++ b/fs/quota/dquot.c | |||
@@ -2164,7 +2164,9 @@ int vfs_quota_on_mount(struct super_block *sb, char *qf_name, | |||
2164 | struct dentry *dentry; | 2164 | struct dentry *dentry; |
2165 | int error; | 2165 | int error; |
2166 | 2166 | ||
2167 | mutex_lock(&sb->s_root->d_inode->i_mutex); | ||
2167 | dentry = lookup_one_len(qf_name, sb->s_root, strlen(qf_name)); | 2168 | dentry = lookup_one_len(qf_name, sb->s_root, strlen(qf_name)); |
2169 | mutex_unlock(&sb->s_root->d_inode->i_mutex); | ||
2168 | if (IS_ERR(dentry)) | 2170 | if (IS_ERR(dentry)) |
2169 | return PTR_ERR(dentry); | 2171 | return PTR_ERR(dentry); |
2170 | 2172 | ||