shm creation: use temporary name with O_CREAT | O_EXCL
[lttng-ust.git] / libringbuffer / ring_buffer_frontend.c
index ee205e86fbf0389b06d7bee31f8f59e55cb5db5a..bd774dfa4645633708dc82c68f35a074436e73c2 100644 (file)
@@ -456,6 +456,8 @@ struct shm_handle *channel_create(const struct lib_ring_buffer_config *config,
                shmsize += sizeof(struct lib_ring_buffer_shmp);
 
        shmobj = shm_object_table_append(handle->table, shmsize);
+       if (!shmobj)
+               goto error_append;
        set_shmp(handle->chan, zalloc_shm(shmobj, sizeof(struct channel)));
        chan = shmp(handle, handle->chan);
        if (!chan)
@@ -567,8 +569,8 @@ void *channel_destroy(struct channel *chan, struct shm_handle *handle)
         * sessiond/consumer are keeping a reference on the shm file
         * descriptor directly. No need to refcount.
         */
-       channel_release(chan, handle);
        priv = chan->backend.priv;
+       channel_release(chan, handle);
        return priv;
 }
 
This page took 0.023194 seconds and 4 git commands to generate.