Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752992AbbDQCQR (ORCPT ); Thu, 16 Apr 2015 22:16:17 -0400 Received: from mga01.intel.com ([192.55.52.88]:60258 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751455AbbDQCQH (ORCPT ); Thu, 16 Apr 2015 22:16:07 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.11,591,1422950400"; d="scan'208";a="557438249" From: Wang Xiaoming To: akpm@linux-foundation.org, oleg@redhat.com, andriy.shevchenko@linux.intel.com, linux@rasmusvillemoes.dk, ebiederm@xmission.com, eparis@redhat.com, chenhanxiao@cn.fujitsu.com, tj@kernel.org, tglx@linutronix.de, linux-kernel@vger.kernel.org Cc: Wang Xiaoming , "Schallberger, Timothy M" , Dongxing Zhang Subject: [PATCH] proc: move the adding option Ngid to the end of proc/PID/status Date: Fri, 17 Apr 2015 10:13:15 +0800 Message-Id: <1429236796-22387-1-git-send-email-xiaoming.wang@intel.com> X-Mailer: git-send-email 1.7.9.5 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2550 Lines: 78 Move debugging has been done and the following Kernel issue was found with a number of applications. Take a look at: (even though the comments are for Weibo.browser they also pertain to other apps that use Libsecuritysdk-x.x.x.so In kernel(3.14) is a little different than before it will generate /proc/PID/status in this way: Name: a.weibo.browser State: T (stopped) Tgid: 8487 Ngid: 0 ---- add in kernel after (3.11 maybe) Pid: 8487 PPid: 139 TracerPid: 0 ---------------------=> line 7 …… But on previous kernel(3.11), it normally like that: Name: a.weibo.browser State: S (sleeping) Tgid: 2109 Pid: 2109 PPid: 231 TracerPid: 0 -----------------------=> line 6 …… WeiBo always assume the “TracePid” is in line 6 of the status. And it will read “PPid: 139” instead of “TracePid: 0”, which will made Weibo to kill the process because there is attached debugger. This issue also met in other application. As the Ngid is added later, so it should be added at the end of task_state. It is better keeping compatible to avoid such issue. Signed-off-by: Schallberger, Timothy M Signed-off-by: Dongxing Zhang Signed-off-by: Wang Xiaoming --- fs/proc/array.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/fs/proc/array.c b/fs/proc/array.c index fd02a9e..86dcd2b 100644 --- a/fs/proc/array.c +++ b/fs/proc/array.c @@ -163,15 +163,15 @@ static inline void task_state(struct seq_file *m, struct pid_namespace *ns, seq_printf(m, "State:\t%s\n" "Tgid:\t%d\n" - "Ngid:\t%d\n" "Pid:\t%d\n" "PPid:\t%d\n" "TracerPid:\t%d\n" "Uid:\t%d\t%d\t%d\t%d\n" "Gid:\t%d\t%d\t%d\t%d\n" + "Ngid:\t%d\n" "FDSize:\t%d\nGroups:\t", get_task_state(p), - tgid, ngid, pid_nr_ns(pid, ns), ppid, tpid, + tgid, pid_nr_ns(pid, ns), ppid, tpid, from_kuid_munged(user_ns, cred->uid), from_kuid_munged(user_ns, cred->euid), from_kuid_munged(user_ns, cred->suid), @@ -180,6 +180,7 @@ static inline void task_state(struct seq_file *m, struct pid_namespace *ns, from_kgid_munged(user_ns, cred->egid), from_kgid_munged(user_ns, cred->sgid), from_kgid_munged(user_ns, cred->fsgid), + ngid, max_fds); group_info = cred->group_info; -- 1.7.9.5 -- 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/