Fix: statedump: check task_active_pid_ns return value for NULL
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Thu, 20 Feb 2020 14:58:42 +0000 (09:58 -0500)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Thu, 20 Feb 2020 15:48:22 +0000 (10:48 -0500)
The lttng-statedump checks the return value of task_active_pid_ns()
before each use within trace_lttng_statedump_process_state(), but misses
the NULL check before dereferencing pid_ns->parent.

This race happens if a task exists in "dead" state while the statedump
iterates on that task.

Reported-by: Li Zhou <li.zhou@windriver.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
lttng-statedump-impl.c

index ecec4f0bc42bb12f84ce5a9ac1fa33c62edbf3df..baa5a1efd33e56aa7ab545766e41b7fde363b458 100644 (file)
@@ -384,7 +384,7 @@ void lttng_statedump_process_ns(struct lttng_session *session,
        do {
                trace_lttng_statedump_process_state(session,
                        p, type, mode, submode, status, pid_ns);
-               pid_ns = pid_ns->parent;
+               pid_ns = pid_ns ? pid_ns->parent : NULL;
        } while (pid_ns);
 }
 
This page took 0.026502 seconds and 4 git commands to generate.