Fix: ust-app: protect app socket protocol with lock
[lttng-tools.git] / src / bin / lttng-sessiond / ust-consumer.c
index ba464d9b7d90c8b1a318c527eefaf7f5032b2b02..7317b64eff8f1cff92a79af54ebb1f8440c738d9 100644 (file)
@@ -73,7 +73,7 @@ static char *setup_trace_path(struct consumer_output *consumer,
                ret = run_as_mkdir_recursive(pathname, S_IRWXU | S_IRWXG,
                                ua_sess->euid, ua_sess->egid);
                if (ret < 0) {
-                       if (ret != -EEXIST) {
+                       if (errno != EEXIST) {
                                ERR("Trace directory creation error");
                                goto error;
                        }
@@ -400,7 +400,9 @@ int ust_consumer_send_stream_to_ust(struct ust_app *app,
        DBG2("UST consumer send stream to app %d", app->sock);
 
        /* Relay stream to application. */
+       pthread_mutex_lock(&app->sock_lock);
        ret = ustctl_send_stream_to_ust(app->sock, channel->obj, stream->obj);
+       pthread_mutex_unlock(&app->sock_lock);
        if (ret < 0) {
                if (ret != -EPIPE && ret != -LTTNG_UST_ERR_EXITING) {
                        ERR("ustctl send stream handle %d to app pid: %d with ret %d",
@@ -435,7 +437,9 @@ int ust_consumer_send_channel_to_ust(struct ust_app *app,
                        app->sock, app->pid, channel->name, channel->tracing_channel_id);
 
        /* Send stream to application. */
+       pthread_mutex_lock(&app->sock_lock);
        ret = ustctl_send_channel_to_ust(app->sock, ua_sess->handle, channel->obj);
+       pthread_mutex_unlock(&app->sock_lock);
        if (ret < 0) {
                if (ret != -EPIPE && ret != -LTTNG_UST_ERR_EXITING) {
                        ERR("Error ustctl send channel %s to app pid: %d with ret %d",
This page took 0.023855 seconds and 4 git commands to generate.