* Julien Desfossez ([email protected]) wrote: > consumer_add_channel can return an error, it needs to be handled. > Also, init_kernel_tracing returns a positive lttng_error_code on error, > so the check in start_kernel_session needs to be for ret != 0.
This patch was merged into stable-2.2 and master of lttng-tools. > > Signed-off-by: Julien Desfossez <[email protected]> > --- > src/bin/lttng-sessiond/cmd.c | 2 +- > src/common/consumer.c | 2 +- > src/common/kernel-consumer/kernel-consumer.c | 19 +++++++++++++------ > 3 files changed, 15 insertions(+), 8 deletions(-) > > diff --git a/src/bin/lttng-sessiond/cmd.c b/src/bin/lttng-sessiond/cmd.c > index 4eacb3c..cbf2bce 100644 > --- a/src/bin/lttng-sessiond/cmd.c > +++ b/src/bin/lttng-sessiond/cmd.c > @@ -754,7 +754,7 @@ static int start_kernel_session(struct ltt_kernel_session > *ksess, int wpipe) > > /* Setup kernel consumer socket and send fds to it */ > ret = init_kernel_tracing(ksess); > - if (ret < 0) { > + if (ret != 0) { > ret = LTTNG_ERR_KERN_START_FAIL; > goto error; > } > diff --git a/src/common/consumer.c b/src/common/consumer.c > index 84865d3..c9e4bae 100644 > --- a/src/common/consumer.c > +++ b/src/common/consumer.c > @@ -903,7 +903,7 @@ int consumer_add_channel(struct lttng_consumer_channel > *channel, > /* Channel already exist. Ignore the insertion */ > ERR("Consumer add channel key %" PRIu64 " already exists!", > channel->key); > - ret = -1; > + ret = LTTNG_ERR_KERN_CHAN_EXIST; > goto end; > } > > diff --git a/src/common/kernel-consumer/kernel-consumer.c > b/src/common/kernel-consumer/kernel-consumer.c > index d985014..f3a3a22 100644 > --- a/src/common/kernel-consumer/kernel-consumer.c > +++ b/src/common/kernel-consumer/kernel-consumer.c > @@ -122,6 +122,7 @@ int lttng_kconsumer_recv_cmd(struct > lttng_consumer_local_data *ctx, > case LTTNG_CONSUMER_ADD_CHANNEL: > { > struct lttng_consumer_channel *new_channel; > + int ret_recv; > > /* First send a status message before receiving the fds. */ > ret = consumer_send_status_msg(sock, ret_code); > @@ -129,7 +130,6 @@ int lttng_kconsumer_recv_cmd(struct > lttng_consumer_local_data *ctx, > /* Somehow, the session daemon is not responding > anymore. */ > goto end_nosignal; > } > - > DBG("consumer_add_channel %" PRIu64, msg.u.channel.channel_key); > new_channel = > consumer_allocate_channel(msg.u.channel.channel_key, > msg.u.channel.session_id, > msg.u.channel.pathname, > @@ -155,15 +155,22 @@ int lttng_kconsumer_recv_cmd(struct > lttng_consumer_local_data *ctx, > }; > > if (ctx->on_recv_channel != NULL) { > - ret = ctx->on_recv_channel(new_channel); > - if (ret == 0) { > - consumer_add_channel(new_channel, ctx); > - } else if (ret < 0) { > + ret_recv = ctx->on_recv_channel(new_channel); > + if (ret_recv == 0) { > + ret = consumer_add_channel(new_channel, ctx); > + } else if (ret_recv < 0) { > goto end_nosignal; > } > } else { > - consumer_add_channel(new_channel, ctx); > + ret = consumer_add_channel(new_channel, ctx); > + } > + > + /* If we received an error in add_channel, we need to report > it. */ > + if (ret != 0) { > + consumer_send_status_msg(sock, ret); > + goto end_nosignal; > } > + > goto end_nosignal; > } > case LTTNG_CONSUMER_ADD_STREAM: > -- > 1.7.10.4 > > > _______________________________________________ > lttng-dev mailing list > [email protected] > http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev -- Mathieu Desnoyers EfficiOS Inc. http://www.efficios.com _______________________________________________ lttng-dev mailing list [email protected] http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
