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

Reply via email to