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:47:44 +0000 (10:47 -0500)
The lttng-statedump checks the return value of task_active_pid_ns()
before each use within lttng_statedump_process_pid_ns(), 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 066b9612c0ee5f3884f023c1211eef17c58ad305..043bbaa1a8eaee4b91655f8649ed2e4fccfb8cc5 100644 (file)
@@ -426,7 +426,7 @@ void lttng_statedump_process_ns(struct lttng_session *session,
        pid_ns = task_active_pid_ns(p);
        do {
                trace_lttng_statedump_process_pid_ns(session, p, pid_ns);
-               pid_ns = pid_ns->parent;
+               pid_ns = pid_ns ? pid_ns->parent : NULL;
        } while (pid_ns);
 
 
This page took 0.037248 seconds and 4 git commands to generate.