merged into master, 2.10, 2.9, thanks! Mathieu
----- On Feb 21, 2018, at 4:36 PM, Michael Jeanson [email protected] wrote: > The pid_ns we currently use from the nsproxy struct is not the task's > pid_ns but the one that children of this task will use. > > As stated in include/linux/nsproxy.h : > > The pid namespace is an exception -- it's accessed using > task_active_pid_ns. The pid namespace here is the > namespace that children will use. > > While it will be the same most of the time, it will report incorrect > information in some situations. Plus it has the side effect of > simplifiyng the code and removing kernel version checks. > > Signed-off-by: Michael Jeanson <[email protected]> > --- > lttng-statedump-impl.c | 40 +++++----------------------------------- > wrapper/nsproxy.h | 42 ------------------------------------------ > 2 files changed, 5 insertions(+), 77 deletions(-) > delete mode 100644 wrapper/nsproxy.h > > diff --git a/lttng-statedump-impl.c b/lttng-statedump-impl.c > index a252043..1c09e51 100644 > --- a/lttng-statedump-impl.c > +++ b/lttng-statedump-impl.c > @@ -52,7 +52,6 @@ > #include <wrapper/irqdesc.h> > #include <wrapper/spinlock.h> > #include <wrapper/fdtable.h> > -#include <wrapper/nsproxy.h> > #include <wrapper/irq.h> > #include <wrapper/tracepoint.h> > #include <wrapper/genhd.h> > @@ -392,43 +391,14 @@ void lttng_statedump_process_ns(struct lttng_session > *session, > enum lttng_execution_submode submode, > enum lttng_process_status status) > { > - struct nsproxy *proxy; > struct pid_namespace *pid_ns; > > - /* > - * Back and forth on locking strategy within Linux upstream for nsproxy. > - * See Linux upstream commit 728dba3a39c66b3d8ac889ddbe38b5b1c264aec3 > - * "namespaces: Use task_lock and not rcu to protect nsproxy" > - * for details. > - */ > -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,17,0) || \ > - LTTNG_UBUNTU_KERNEL_RANGE(3,13,11,36, 3,14,0,0) || \ > - LTTNG_UBUNTU_KERNEL_RANGE(3,16,1,11, 3,17,0,0) || \ > - LTTNG_RHEL_KERNEL_RANGE(3,10,0,229,13,0, 3,11,0,0,0,0)) > - proxy = p->nsproxy; > -#else > - rcu_read_lock(); > - proxy = task_nsproxy(p); > -#endif > - if (proxy) { > - pid_ns = lttng_get_proxy_pid_ns(proxy); > - do { > - trace_lttng_statedump_process_state(session, > - p, type, mode, submode, status, pid_ns); > - pid_ns = pid_ns->parent; > - } while (pid_ns); > - } else { > + pid_ns = task_active_pid_ns(p); > + do { > trace_lttng_statedump_process_state(session, > - p, type, mode, submode, status, NULL); > - } > -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,17,0) || \ > - LTTNG_UBUNTU_KERNEL_RANGE(3,13,11,36, 3,14,0,0) || \ > - LTTNG_UBUNTU_KERNEL_RANGE(3,16,1,11, 3,17,0,0) || \ > - LTTNG_RHEL_KERNEL_RANGE(3,10,0,229,13,0, 3,11,0,0,0,0)) > - /* (nothing) */ > -#else > - rcu_read_unlock(); > -#endif > + p, type, mode, submode, status, pid_ns); > + pid_ns = pid_ns->parent; > + } while (pid_ns); > } > > static > diff --git a/wrapper/nsproxy.h b/wrapper/nsproxy.h > deleted file mode 100644 > index e9766ef..0000000 > --- a/wrapper/nsproxy.h > +++ /dev/null > @@ -1,42 +0,0 @@ > -#ifndef _LTTNG_WRAPPER_NSPROXY_H > -#define _LTTNG_WRAPPER_NSPROXY_H > - > -/* > - * wrapper/nsproxy.h > - * > - * Copyright (C) 2011-2012 Mathieu Desnoyers <[email protected]> > - * > - * This library is free software; you can redistribute it and/or > - * modify it under the terms of the GNU Lesser General Public > - * License as published by the Free Software Foundation; only > - * version 2.1 of the License. > - * > - * This library is distributed in the hope that it will be useful, > - * but WITHOUT ANY WARRANTY; without even the implied warranty of > - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > - * Lesser General Public License for more details. > - * > - * You should have received a copy of the GNU Lesser General Public > - * License along with this library; if not, write to the Free Software > - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 > USA > - */ > - > -#include <linux/version.h> > -#include <linux/nsproxy.h> > - > -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0)) > -static inline > -struct pid_namespace *lttng_get_proxy_pid_ns(struct nsproxy *proxy) > -{ > - return proxy->pid_ns_for_children; > -} > -#else > -static inline > -struct pid_namespace *lttng_get_proxy_pid_ns(struct nsproxy *proxy) > -{ > - return proxy->pid_ns; > -} > -#endif > - > - > -#endif /* _LTTNG_WRAPPER_NSPROXY_H */ > -- > 2.7.4 -- Mathieu Desnoyers EfficiOS Inc. http://www.efficios.com _______________________________________________ lttng-dev mailing list [email protected] https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
