Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
while ((ret = kernctl_create_stream(channel->fd)) >= 0) {
lks = trace_kernel_create_stream();
if (lks == NULL) {
while ((ret = kernctl_create_stream(channel->fd)) >= 0) {
lks = trace_kernel_create_stream();
if (lks == NULL) {
+ ret = close(ret);
+ if (ret) {
+ PERROR("close");
+ }
*/
ssize_t kernel_list_events(int tracer_fd, struct lttng_event **events)
{
*/
ssize_t kernel_list_events(int tracer_fd, struct lttng_event **events)
{
char *event;
size_t nbmem, count = 0;
ssize_t size;
char *event;
size_t nbmem, count = 0;
ssize_t size;
*events = elist;
DBG("Kernel list events done (%zu events)", count);
end:
*events = elist;
DBG("Kernel list events done (%zu events)", count);
end:
- fclose(fp); /* closes both fp and fd */
+ ret = fclose(fp); /* closes both fp and fd */
+ if (ret) {
+ PERROR("fclose");
+ }
+ ret = close(fd);
+ if (ret) {
+ PERROR("close");
+ }
/* Ignore error, we don't really care */
}
}
/* Ignore error, we don't really care */
}
}
+ ret = fclose(fp);
+ if (ret) {
+ PERROR("fclose");
+ }
*/
void trace_kernel_destroy_stream(struct ltt_kernel_stream *stream)
{
*/
void trace_kernel_destroy_stream(struct ltt_kernel_stream *stream)
{
DBG("[trace] Closing stream fd %d", stream->fd);
/* Close kernel fd */
DBG("[trace] Closing stream fd %d", stream->fd);
/* Close kernel fd */
+ ret = close(stream->fd);
+ if (ret) {
+ PERROR("close");
+ }
/* Remove from stream list */
cds_list_del(&stream->list);
/* Remove from stream list */
cds_list_del(&stream->list);
*/
void trace_kernel_destroy_event(struct ltt_kernel_event *event)
{
*/
void trace_kernel_destroy_event(struct ltt_kernel_event *event)
{
if (event->fd >= 0) {
DBG("[trace] Closing event fd %d", event->fd);
/* Close kernel fd */
if (event->fd >= 0) {
DBG("[trace] Closing event fd %d", event->fd);
/* Close kernel fd */
+ ret = close(event->fd);
+ if (ret) {
+ PERROR("close");
+ }
} else {
DBG("[trace] Tearing down event (no associated fd)");
}
} else {
DBG("[trace] Tearing down event (no associated fd)");
}
{
struct ltt_kernel_stream *stream, *stmp;
struct ltt_kernel_event *event, *etmp;
{
struct ltt_kernel_stream *stream, *stmp;
struct ltt_kernel_event *event, *etmp;
DBG("[trace] Closing channel fd %d", channel->fd);
/* Close kernel fd */
DBG("[trace] Closing channel fd %d", channel->fd);
/* Close kernel fd */
+ ret = close(channel->fd);
+ if (ret) {
+ PERROR("close");
+ }
/* For each stream in the channel list */
cds_list_for_each_entry_safe(stream, stmp, &channel->stream_list.head, list) {
/* For each stream in the channel list */
cds_list_for_each_entry_safe(stream, stmp, &channel->stream_list.head, list) {
*/
void trace_kernel_destroy_metadata(struct ltt_kernel_metadata *metadata)
{
*/
void trace_kernel_destroy_metadata(struct ltt_kernel_metadata *metadata)
{
DBG("[trace] Closing metadata fd %d", metadata->fd);
/* Close kernel fd */
DBG("[trace] Closing metadata fd %d", metadata->fd);
/* Close kernel fd */
+ ret = close(metadata->fd);
+ if (ret) {
+ PERROR("close");
+ }
free(metadata->conf);
free(metadata->pathname);
free(metadata->conf);
free(metadata->pathname);
void trace_kernel_destroy_session(struct ltt_kernel_session *session)
{
struct ltt_kernel_channel *channel, *ctmp;
void trace_kernel_destroy_session(struct ltt_kernel_session *session)
{
struct ltt_kernel_channel *channel, *ctmp;
DBG("[trace] Closing session fd %d", session->fd);
/* Close kernel fds */
DBG("[trace] Closing session fd %d", session->fd);
/* Close kernel fds */
+ ret = close(session->fd);
+ if (ret) {
+ PERROR("close");
+ }
if (session->metadata_stream_fd != 0) {
DBG("[trace] Closing metadata stream fd %d", session->metadata_stream_fd);
if (session->metadata_stream_fd != 0) {
DBG("[trace] Closing metadata stream fd %d", session->metadata_stream_fd);
- close(session->metadata_stream_fd);
+ ret = close(session->metadata_stream_fd);
+ if (ret) {
+ PERROR("close");
+ }
}
if (session->metadata != NULL) {
}
if (session->metadata != NULL) {
* closing this socket, otherwise an application could re-use the socket ID
* and race with the teardown, using the same hash table entry.
*/
* closing this socket, otherwise an application could re-use the socket ID
* and race with the teardown, using the same hash table entry.
*/
+ ret = close(sock);
+ if (ret) {
+ PERROR("close");
+ }
DBG2("UST app pid %d deleted", app->key.pid);
free(app);
DBG2("UST app pid %d deleted", app->key.pid);
free(app);
int ust_app_register(struct ust_register_msg *msg, int sock)
{
struct ust_app *lta;
int ust_app_register(struct ust_register_msg *msg, int sock)
{
struct ust_app *lta;
if ((msg->bits_per_long == 64 && ust_consumerd64_fd == -EINVAL)
|| (msg->bits_per_long == 32 && ust_consumerd32_fd == -EINVAL)) {
ERR("Registration failed: application \"%s\" (pid: %d) has "
"%d-bit long, but no consumerd for this long size is available.\n",
msg->name, msg->pid, msg->bits_per_long);
if ((msg->bits_per_long == 64 && ust_consumerd64_fd == -EINVAL)
|| (msg->bits_per_long == 32 && ust_consumerd32_fd == -EINVAL)) {
ERR("Registration failed: application \"%s\" (pid: %d) has "
"%d-bit long, but no consumerd for this long size is available.\n",
msg->name, msg->pid, msg->bits_per_long);
+ ret = close(sock);
+ if (ret) {
+ PERROR("close");
+ }
return -EINVAL;
}
if (msg->major != LTTNG_UST_COMM_MAJOR) {
ERR("Registration failed: application \"%s\" (pid: %d) has "
"communication protocol version %u.%u, but sessiond supports 2.x.\n",
msg->name, msg->pid, msg->major, msg->minor);
return -EINVAL;
}
if (msg->major != LTTNG_UST_COMM_MAJOR) {
ERR("Registration failed: application \"%s\" (pid: %d) has "
"communication protocol version %u.%u, but sessiond supports 2.x.\n",
msg->name, msg->pid, msg->major, msg->minor);
+ ret = close(sock);
+ if (ret) {
+ PERROR("close");
+ }
return -EINVAL;
}
lta = zmalloc(sizeof(struct ust_app));
return -EINVAL;
}
lta = zmalloc(sizeof(struct ust_app));