diff options
author | Christoph Hellwig <hch@lst.de> | 2005-06-23 03:09:16 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-06-23 12:45:20 -0400 |
commit | 2fa389c5eb8c97d621653184d2adf5fdbd4a3167 (patch) | |
tree | a958e6ab570003e81b91df986492ca60fd247006 | |
parent | 84de856ed30c568c2bb7b9ac0679772bd2737d9b (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.c | 9 |
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: | |||
1522 | int vfs_quota_on_mount(struct super_block *sb, char *qf_name, | 1522 | int 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 | } |