From mboxrd@z Thu Jan 1 00:00:00 1970 From: SF Markus Elfring Date: Fri, 26 Jun 2015 16:42:14 +0000 Subject: Re: [PATCH] fs-proc: One function call less in proc_sys_lookup() after error detection Message-Id: <558D80E6.8030307@users.sourceforge.net> List-Id: References: <5307CAA2.8060406@users.sourceforge.net> <530A086E.8010901@users.sourceforge.net> <530A72AA.3000601@users.sourceforge.net> <530B5FB6.6010207@users.sourceforge.net> <530C5E18.1020800@users.sourceforge.net> <530CD2C4.4050903@users.sourceforge.net> <530CF8FF.8080600@users.sourceforge.net> <530DD06F.4090703@users.sourceforge.net> <5317A59D.4@users.sourceforge.net> <546B5CF3.1070203@users.sourceforge.net> In-Reply-To: <546B5CF3.1070203@users.sourceforge.net> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: linux-kernel@vger.kernel.org Cc: kernel-janitors@vger.kernel.org, Julia Lawall > From: Markus Elfring > Date: Tue, 18 Nov 2014 15:42:43 +0100 > > The sysctl_head_finish() function was called in an inefficient way by the > implementation of the proc_sys_lookup() function in case of a lookup failure. > The corresponding source code was improved by deletion of an unnecessary > null pointer check and a few adjustments for jump labels. > > Signed-off-by: Markus Elfring > --- > fs/proc/proc_sysctl.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c > index f92d5dd..6606aaf 100644 > --- a/fs/proc/proc_sysctl.c > +++ b/fs/proc/proc_sysctl.c > @@ -457,21 +457,21 @@ static struct dentry *proc_sys_lookup(struct inode *dir, struct dentry *dentry, > ret = sysctl_follow_link(&h, &p, current->nsproxy); > err = ERR_PTR(ret); > if (ret) > - goto out; > + goto inode_failure; > } > > err = ERR_PTR(-ENOMEM); > inode = proc_sys_make_inode(dir->i_sb, h ? h : head, p); > if (!inode) > - goto out; > + goto inode_failure; > > err = NULL; > d_set_d_op(dentry, &proc_sys_dentry_operations); > d_add(dentry, inode); > > +inode_failure: > + sysctl_head_finish(h); > out: > - if (h) > - sysctl_head_finish(h); > sysctl_head_finish(head); > return err; > } > Would anybody like to integrate this update suggestion into a source code repository? Regards, Markus