From: Markus Elfring <elfr...@users.sourceforge.net>
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 <elfr...@users.sourceforge.net>
---
 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;
 }
-- 
2.1.3

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to