From: Ian Kent Date: Thu, 24 Mar 2011 17:51:14 +0000 (+0800) Subject: autofs4 - fix dentry leak in autofs4_expire_direct() X-Git-Tag: v2.6.39-rc1~75^2~13 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=f9398c233e3201874395eea8558eb616fb198648;p=~shefty%2Frdma-dev.git autofs4 - fix dentry leak in autofs4_expire_direct() There is a missing dput() when returning from autofs4_expire_direct() when we see that the dentry is already a pending mount. Signed-off-by: Ian Kent Acked-by: David Howells Signed-off-by: Al Viro --- diff --git a/fs/autofs4/expire.c b/fs/autofs4/expire.c index c896dd6c1ea..c403abcc725 100644 --- a/fs/autofs4/expire.c +++ b/fs/autofs4/expire.c @@ -290,10 +290,8 @@ struct dentry *autofs4_expire_direct(struct super_block *sb, spin_lock(&sbi->fs_lock); ino = autofs4_dentry_ino(root); /* No point expiring a pending mount */ - if (ino->flags & AUTOFS_INF_PENDING) { - spin_unlock(&sbi->fs_lock); - return NULL; - } + if (ino->flags & AUTOFS_INF_PENDING) + goto out; if (!autofs4_direct_busy(mnt, root, timeout, do_now)) { struct autofs_info *ino = autofs4_dentry_ino(root); ino->flags |= AUTOFS_INF_EXPIRING; @@ -301,6 +299,7 @@ struct dentry *autofs4_expire_direct(struct super_block *sb, spin_unlock(&sbi->fs_lock); return root; } +out: spin_unlock(&sbi->fs_lock); dput(root);