diff options
author | Ian Kent <raven@themaw.net> | 2011-03-24 13:51:14 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2011-03-24 14:54:34 -0400 |
commit | f9398c233e3201874395eea8558eb616fb198648 (patch) | |
tree | adf805206a5bba08a44878dba61256a9dca6120d | |
parent | 3c3199852905ceb90a70e98777e71d369a5f0823 (diff) |
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 <raven@themaw.net>
Acked-by: David Howells <dhowells@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
-rw-r--r-- | fs/autofs4/expire.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/fs/autofs4/expire.c b/fs/autofs4/expire.c index c896dd6c1ea9..c403abcc725b 100644 --- a/fs/autofs4/expire.c +++ b/fs/autofs4/expire.c | |||
@@ -290,10 +290,8 @@ struct dentry *autofs4_expire_direct(struct super_block *sb, | |||
290 | spin_lock(&sbi->fs_lock); | 290 | spin_lock(&sbi->fs_lock); |
291 | ino = autofs4_dentry_ino(root); | 291 | ino = autofs4_dentry_ino(root); |
292 | /* No point expiring a pending mount */ | 292 | /* No point expiring a pending mount */ |
293 | if (ino->flags & AUTOFS_INF_PENDING) { | 293 | if (ino->flags & AUTOFS_INF_PENDING) |
294 | spin_unlock(&sbi->fs_lock); | 294 | goto out; |
295 | return NULL; | ||
296 | } | ||
297 | if (!autofs4_direct_busy(mnt, root, timeout, do_now)) { | 295 | if (!autofs4_direct_busy(mnt, root, timeout, do_now)) { |
298 | struct autofs_info *ino = autofs4_dentry_ino(root); | 296 | struct autofs_info *ino = autofs4_dentry_ino(root); |
299 | ino->flags |= AUTOFS_INF_EXPIRING; | 297 | ino->flags |= AUTOFS_INF_EXPIRING; |
@@ -301,6 +299,7 @@ struct dentry *autofs4_expire_direct(struct super_block *sb, | |||
301 | spin_unlock(&sbi->fs_lock); | 299 | spin_unlock(&sbi->fs_lock); |
302 | return root; | 300 | return root; |
303 | } | 301 | } |
302 | out: | ||
304 | spin_unlock(&sbi->fs_lock); | 303 | spin_unlock(&sbi->fs_lock); |
305 | dput(root); | 304 | dput(root); |
306 | 305 | ||