Fix: fd leak when creating UST metadata channel
[lttng-tools.git] / src / bin / lttng-sessiond / ust-app.c
index d8c8017d83800511afa90e7223211a002e7d6481..d405939985a028ab41643a38a89a68523683aa75 100644 (file)
@@ -2183,6 +2183,7 @@ static int send_channel_uid_to_ust(struct buffer_reg_channel *reg_chan,
 
                ret = ust_consumer_send_stream_to_ust(app, ua_chan, &stream);
                if (ret < 0) {
+                       (void) release_ust_app_stream(-1, &stream);
                        goto error_stream_unlock;
                }
 
@@ -2571,7 +2572,6 @@ static int create_ust_app_metadata(struct ust_app_session *ua_sess,
                 * Safe because the metadata obj pointer is not set so the delete below
                 * will not put a FD back again.
                 */
-               lttng_fd_put(LTTNG_FD_APPS, 1);
                goto error_consumer;
        }
 
@@ -2587,7 +2587,6 @@ static int create_ust_app_metadata(struct ust_app_session *ua_sess,
                 * Safe because the metadata obj pointer is not set so the delete below
                 * will not put a FD back again.
                 */
-               lttng_fd_put(LTTNG_FD_APPS, 1);
                goto error_consumer;
        }
 
@@ -2595,6 +2594,7 @@ static int create_ust_app_metadata(struct ust_app_session *ua_sess,
                        metadata->key, app->pid);
 
 error_consumer:
+       lttng_fd_put(LTTNG_FD_APPS, 1);
        delete_ust_app_channel(-1, metadata, app);
 error:
        return ret;
This page took 0.02354 seconds and 4 git commands to generate.