From: Steven Whitehouse <swhiteho@redhat.com>
To: cluster-devel@redhat.com, linux-kernel@vger.kernel.org
Cc: Miklos Szeredi <miklos@szeredi.hu>,
Miklos Szeredi <mszeredi@suse.cz>,
Steven Whitehouse <swhiteho@redhat.com>,
stable@vger.kernel.org
Subject: [PATCH 07/19] GFS2: fix dentry leaks
Date: Mon, 4 Nov 2013 11:09:30 +0000 [thread overview]
Message-ID: <1383563382-8535-8-git-send-email-swhiteho@redhat.com> (raw)
In-Reply-To: <1383563382-8535-1-git-send-email-swhiteho@redhat.com>
From: Miklos Szeredi <miklos@szeredi.hu>
We need to dput() the result of d_splice_alias(), unless it is passed to
finish_no_open().
Edited by Steven Whitehouse in order to make it apply to the current
GFS2 git tree, and taking account of a prerequisite patch which hasn't
been applied.
Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
Cc: stable@vger.kernel.org
diff --git a/fs/gfs2/inode.c b/fs/gfs2/inode.c
index 6d7f976..cd58611 100644
--- a/fs/gfs2/inode.c
+++ b/fs/gfs2/inode.c
@@ -585,12 +585,14 @@ static int gfs2_create_inode(struct inode *dir, struct dentry *dentry,
d = d_splice_alias(inode, dentry);
error = 0;
if (file) {
- if (d == NULL)
- d = dentry;
- if (S_ISREG(inode->i_mode))
- error = finish_open(file, d, gfs2_open_common, opened);
- else
+ if (S_ISREG(inode->i_mode)) {
+ WARN_ON(d != NULL);
+ error = finish_open(file, dentry, gfs2_open_common, opened);
+ } else {
error = finish_no_open(file, d);
+ }
+ } else {
+ dput(d);
}
gfs2_glock_dq_uninit(ghs);
return error;
@@ -777,8 +779,10 @@ static struct dentry *__gfs2_lookup(struct inode *dir, struct dentry *dentry,
error = finish_open(file, dentry, gfs2_open_common, opened);
gfs2_glock_dq_uninit(&gh);
- if (error)
+ if (error) {
+ dput(d);
return ERR_PTR(error);
+ }
return d;
}
@@ -1159,14 +1163,16 @@ static int gfs2_atomic_open(struct inode *dir, struct dentry *dentry,
d = __gfs2_lookup(dir, dentry, file, opened);
if (IS_ERR(d))
return PTR_ERR(d);
- if (d == NULL)
- d = dentry;
- if (d->d_inode) {
+ if (d != NULL)
+ dentry = d;
+ if (dentry->d_inode) {
if (!(*opened & FILE_OPENED))
- return finish_no_open(file, d);
+ return finish_no_open(file, dentry);
+ dput(d);
return 0;
}
+ BUG_ON(d != NULL);
if (!(flags & O_CREAT))
return -ENOENT;
--
1.7.4.4
next prev parent reply other threads:[~2013-11-04 11:36 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-04 11:09 GFS2: Pre-pull patch posting (merge window) Steven Whitehouse
2013-11-04 11:09 ` [PATCH 01/19] GFS2: d_splice_alias() can't return error Steven Whitehouse
2013-11-04 11:09 ` [PATCH 02/19] GFS2: optimize rbm_from_block wrt bi_start Steven Whitehouse
2013-11-04 11:09 ` [PATCH 03/19] GFS2: introduce bi_blocks for optimization Steven Whitehouse
2013-11-04 11:09 ` [PATCH 04/19] GFS2: Do not reset flags on active reservations Steven Whitehouse
2013-11-04 11:09 ` [PATCH 05/19] GFS2: Introduce rbm field bii Steven Whitehouse
2013-11-04 11:09 ` [PATCH 06/19] GFS2: new function gfs2_rbm_incr Steven Whitehouse
2013-11-04 11:09 ` Steven Whitehouse [this message]
2013-11-04 11:09 ` [PATCH 08/19] GFS2: Clean up reservation removal Steven Whitehouse
2013-11-04 11:09 ` [PATCH 09/19] GFS2: Add allocation parameters structure Steven Whitehouse
2013-11-04 11:09 ` [PATCH 10/19] GFS2: Speed up starting point selection for block allocation Steven Whitehouse
2013-11-04 11:09 ` [PATCH 11/19] GFS2: Move gfs2_icbit_munge into quota.c Steven Whitehouse
2013-11-04 11:09 ` [PATCH 12/19] GFS2: Remove obsolete quota tunable Steven Whitehouse
2013-11-04 11:09 ` [PATCH 13/19] GFS2: Make two similar quota code fragments into a function Steven Whitehouse
2013-11-04 11:09 ` [PATCH 14/19] GFS2: Inline qd_trylock into gfs2_quota_unlock Steven Whitehouse
2013-11-04 11:09 ` [PATCH 15/19] GFS2: Protect quota sync generation Steven Whitehouse
2013-11-04 11:09 ` [PATCH 16/19] GFS2: Use lockref for glocks Steven Whitehouse
2013-11-04 11:22 ` [PATCH 17/19] GFS2: Use reflink for quota data cache Steven Whitehouse
2013-11-04 11:22 ` [PATCH 18/19] GFS2: Rename quota qd_lru_lock qd_lock Steven Whitehouse
2013-11-04 11:22 ` [PATCH 19/19] GFS2: Use generic list_lru for quota Steven Whitehouse
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1383563382-8535-8-git-send-email-swhiteho@redhat.com \
--to=swhiteho@redhat.com \
--cc=cluster-devel@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=miklos@szeredi.hu \
--cc=mszeredi@suse.cz \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome