aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2005-06-23 03:09:16 -0400
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-06-23 12:45:20 -0400
commit2fa389c5eb8c97d621653184d2adf5fdbd4a3167 (patch)
treea958e6ab570003e81b91df986492ca60fd247006
parent84de856ed30c568c2bb7b9ac0679772bd2737d9b (diff)
[PATCH] quota: sanitize dentry handling in vfs_quota_on_mount
Use lookup_one_len instead of opencoding a simplified lookup using lookup_hash with a fake hash. Also there's no need anymore for the d_invalidate as we have a completely valid dentry now. Signed-off-by: Christoph Hellwig <hch@lst.de> Acked-by: Jan Kara <jack@suse.cz> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--fs/dquot.c9
1 files changed, 1 insertions, 8 deletions
diff --git a/fs/dquot.c b/fs/dquot.c
index 343c03655619..37212b039a4a 100644
--- a/fs/dquot.c
+++ b/fs/dquot.c
@@ -1522,11 +1522,10 @@ out_path:
1522int vfs_quota_on_mount(struct super_block *sb, char *qf_name, 1522int vfs_quota_on_mount(struct super_block *sb, char *qf_name,
1523 int format_id, int type) 1523 int format_id, int type)
1524{ 1524{
1525 struct qstr name = {.name = qf_name, .len = 0, .len = strlen(qf_name)};
1526 struct dentry *dentry; 1525 struct dentry *dentry;
1527 int error; 1526 int error;
1528 1527
1529 dentry = lookup_hash(&name, sb->s_root); 1528 dentry = lookup_one_len(qf_name, sb->s_root, strlen(qf_name));
1530 if (IS_ERR(dentry)) 1529 if (IS_ERR(dentry))
1531 return PTR_ERR(dentry); 1530 return PTR_ERR(dentry);
1532 1531
@@ -1534,12 +1533,6 @@ int vfs_quota_on_mount(struct super_block *sb, char *qf_name,
1534 if (!error) 1533 if (!error)
1535 error = vfs_quota_on_inode(dentry->d_inode, type, format_id); 1534 error = vfs_quota_on_inode(dentry->d_inode, type, format_id);
1536 1535
1537 /*
1538 * Now invalidate and put the dentry - quota got its own reference
1539 * to inode and dentry has at least wrong hash so we had better
1540 * throw it away.
1541 */
1542 d_invalidate(dentry);
1543 dput(dentry); 1536 dput(dentry);
1544 return error; 1537 return error;
1545} 1538}