Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1763116AbXKTWmc (ORCPT ); Tue, 20 Nov 2007 17:42:32 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1755543AbXKTWmW (ORCPT ); Tue, 20 Nov 2007 17:42:22 -0500 Received: from ebiederm.dsl.xmission.com ([166.70.28.69]:40447 "EHLO ebiederm.dsl.xmission.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752736AbXKTWmV (ORCPT ); Tue, 20 Nov 2007 17:42:21 -0500 From: ebiederm@xmission.com (Eric W. Biederman) To: Andrew Morton Cc: Pavel Emelyanov , "Rafael J. Wysocki" , Pavel Machek , kernel list , netdev , Ingo Molnar Subject: [PATCH] proc: Fix the threaded /proc/self. References: <20071119191000.GA1560@elf.ucw.cz> <200711192304.25087.rjw@sisk.pl> <4743026B.2020907@openvz.org> <20071120215914.GE24156@elte.hu> Date: Tue, 20 Nov 2007 15:41:12 -0700 In-Reply-To: <20071120215914.GE24156@elte.hu> (Ingo Molnar's message of "Tue, 20 Nov 2007 22:59:14 +0100") Message-ID: User-Agent: Gnus/5.110006 (No Gnus v0.6) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2063 Lines: 61 Long ago when the CLONE_THREAD support first went it someone thought it would be wise to point /proc/self at /proc/ instead of /proc/. Given that /proc/ can return information about a very different task (if enough things have been unshared) then our current process /proc/ seems blatantly wrong. So far I have yet to think up an example where the current behavior would be advantageous, and I can see several places where it is seriously non-intuitive. We may be stuck with the current broken behavior for backwards compatibility reasons but lets try fixing our ancient bug for the 2.6.25 time frame and see if anyone screams. Signed-off-by: Eric W. Biederman --- fs/proc/base.c | 12 ++++++------ 1 files changed, 6 insertions(+), 6 deletions(-) diff --git a/fs/proc/base.c b/fs/proc/base.c index 34a1821..8502436 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c @@ -2050,22 +2050,22 @@ static int proc_self_readlink(struct dentry *dentry, char __user *buffer, int buflen) { struct pid_namespace *ns = dentry->d_sb->s_fs_info; - pid_t tgid = task_tgid_nr_ns(current, ns); + pid_t pid = task_pid_nr_ns(current, ns); char tmp[PROC_NUMBUF]; - if (!tgid) + if (!pid) return -ENOENT; - sprintf(tmp, "%d", tgid); + sprintf(tmp, "%d", pid); return vfs_readlink(dentry,buffer,buflen,tmp); } static void *proc_self_follow_link(struct dentry *dentry, struct nameidata *nd) { struct pid_namespace *ns = dentry->d_sb->s_fs_info; - pid_t tgid = task_tgid_nr_ns(current, ns); + pid_t pid = task_pid_nr_ns(current, ns); char tmp[PROC_NUMBUF]; - if (!tgid) + if (!pid) return ERR_PTR(-ENOENT); - sprintf(tmp, "%d", task_tgid_nr_ns(current, ns)); + sprintf(tmp, "%d", pid); return ERR_PTR(vfs_follow_link(nd,tmp)); } -- 1.5.3.rc6.17.g1911 - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/