sessiond: fix: possible unaligned access in packed structure
[lttng-tools.git] / src / bin / lttng-sessiond / context.c
index 3c7c34df48d6c23b62c43b14e9908d7fb0f763e3..8a43cb7c14e9ab5f336f867d8f88df6e7a71cf11 100644 (file)
@@ -107,7 +107,8 @@ error:
  */
 static int add_uctx_to_channel(struct ltt_ust_session *usess,
                enum lttng_domain_type domain,
-               struct ltt_ust_channel *uchan, struct lttng_event_context *ctx)
+               struct ltt_ust_channel *uchan,
+               const struct lttng_event_context *ctx)
 {
        int ret;
        struct ltt_ust_context *uctx = NULL;
@@ -169,18 +170,19 @@ static int add_uctx_to_channel(struct ltt_ust_session *usess,
                goto error;
        }
 
-       ret = ust_app_add_ctx_channel_glb(usess, uchan, uctx);
-       if (ret < 0) {
-               goto error;
-       }
-
-       rcu_read_lock();
-
        /* Add ltt UST context node to ltt UST channel */
        lttng_ht_add_ulong(uchan->ctx, &uctx->node);
-       rcu_read_unlock();
        cds_list_add_tail(&uctx->list, &uchan->ctx_list);
 
+       if (!usess->active) {
+               goto end;
+       }
+
+       ret = ust_app_add_ctx_channel_glb(usess, uchan, uctx);
+       if (ret < 0) {
+               goto error;
+       }
+end:
        DBG("Context UST %d added to channel %s", uctx->ctx.ctx, uchan->name);
 
        return 0;
@@ -195,7 +197,7 @@ duplicate:
  * Add kernel context to tracer.
  */
 int context_kernel_add(struct ltt_kernel_session *ksession,
-               struct lttng_event_context *ctx, char *channel_name)
+               const struct lttng_event_context *ctx, char *channel_name)
 {
        int ret;
        struct ltt_kernel_channel *kchan;
@@ -259,6 +261,12 @@ int context_kernel_add(struct ltt_kernel_session *ksession,
        case LTTNG_EVENT_CONTEXT_MIGRATABLE:
                kctx->ctx.ctx = LTTNG_KERNEL_CONTEXT_MIGRATABLE;
                break;
+       case LTTNG_EVENT_CONTEXT_CALLSTACK_KERNEL:
+               kctx->ctx.ctx = LTTNG_KERNEL_CONTEXT_CALLSTACK_KERNEL;
+               break;
+       case LTTNG_EVENT_CONTEXT_CALLSTACK_USER:
+               kctx->ctx.ctx = LTTNG_KERNEL_CONTEXT_CALLSTACK_USER;
+               break;
        default:
                ret = LTTNG_ERR_KERN_CONTEXT_FAIL;
                goto error;
@@ -306,7 +314,8 @@ error:
  * Add UST context to tracer.
  */
 int context_ust_add(struct ltt_ust_session *usess,
-               enum lttng_domain_type domain, struct lttng_event_context *ctx,
+               enum lttng_domain_type domain,
+               const struct lttng_event_context *ctx,
                char *channel_name)
 {
        int ret = LTTNG_OK;
This page took 0.025118 seconds and 5 git commands to generate.