lttng lib: ring buffer move null pointer check to open
[lttng-modules.git] / lttng-context-vppid.c
index d55e12db6b2541afd1d7da7274fdb6385f326088..f01b02068d67fa8ef1bdfc8e1a278f93b27cf618 100644 (file)
@@ -31,10 +31,18 @@ void vppid_record(struct lttng_ctx_field *field,
                  struct lib_ring_buffer_ctx *ctx,
                  struct ltt_channel *chan)
 {
+       struct task_struct *parent;
        pid_t vppid;
 
+       /*
+        * nsproxy can be NULL when scheduled out of exit.
+        */
        rcu_read_lock();
-       vppid = task_tgid_vnr(current->real_parent);
+       parent = rcu_dereference(current->real_parent);
+       if (!parent->nsproxy)
+               vppid = 0;
+       else
+               vppid = task_tgid_vnr(parent);
        rcu_read_unlock();
        lib_ring_buffer_align_ctx(ctx, ltt_alignof(vppid));
        chan->ops->event_write(ctx, &vppid, sizeof(vppid));
@@ -47,6 +55,10 @@ int lttng_add_vppid_to_ctx(struct lttng_ctx **ctx)
        field = lttng_append_context(ctx);
        if (!field)
                return -ENOMEM;
+       if (lttng_find_context(*ctx, "vppid")) {
+               lttng_remove_context_field(ctx, field);
+               return -EEXIST;
+       }
        field->event_field.name = "vppid";
        field->event_field.type.atype = atype_integer;
        field->event_field.type.u.basic.integer.size = sizeof(pid_t) * CHAR_BIT;
This page took 0.023104 seconds and 4 git commands to generate.