From: OGAWA Hirofumi Subject: [PATCH] procfs: Fix refcnt leak on proc_self_follow_link() error path Date: Tue, 12 Jan 2010 03:38:36 +0900 Message-ID: <87aawkjxlf.fsf@devron.myhome.or.jp> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org To: Al Viro , Andrew Morton Return-path: Received: from mail.parknet.co.jp ([210.171.160.6]:41859 "EHLO mail.parknet.co.jp" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751050Ab0AKSii (ORCPT ); Mon, 11 Jan 2010 13:38:38 -0500 Sender: linux-fsdevel-owner@vger.kernel.org List-ID: If ->follow_link handler return the error, it should decrement nd->path refcnt. This patch fix it. Signed-off-by: OGAWA Hirofumi --- fs/proc/base.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff -puN fs/proc/base.c~namei-procfs-follow_link-fix fs/proc/base.c --- linux-2.6/fs/proc/base.c~namei-procfs-follow_link-fix 2010-01-12 00:15:15.000000000 +0900 +++ linux-2.6-hirofumi/fs/proc/base.c 2010-01-12 00:15:15.000000000 +0900 @@ -2371,8 +2371,10 @@ static void *proc_self_follow_link(struc struct pid_namespace *ns = dentry->d_sb->s_fs_info; pid_t tgid = task_tgid_nr_ns(current, ns); char tmp[PROC_NUMBUF]; - if (!tgid) + if (!tgid) { + path_put(&nd->path); return ERR_PTR(-ENOENT); + } sprintf(tmp, "%d", task_tgid_nr_ns(current, ns)); return ERR_PTR(vfs_follow_link(nd,tmp)); } _ -- OGAWA Hirofumi