X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fsave.c;h=ce9f2f9ff1772910ac5ce1a1b3b8023e566214c9;hp=e57f0e03a6b451b920592a6cb2a08d5f61d1fd29;hb=4a91420cefb94afc4a20042bdbe2564086dad3cb;hpb=87597c2c3bbaa1502ad2025cbf16704829f3b464 diff --git a/src/bin/lttng-sessiond/save.c b/src/bin/lttng-sessiond/save.c index e57f0e03a..ce9f2f9ff 100644 --- a/src/bin/lttng-sessiond/save.c +++ b/src/bin/lttng-sessiond/save.c @@ -2245,6 +2245,9 @@ int save_session_rotation_schedules(struct config_writer *writer, ret = config_writer_open_element(writer, config_element_rotation_schedules); + if (ret) { + goto end; + } if (session->rotate_timer_period) { ret = save_session_rotation_schedule(writer, LTTNG_ROTATION_SCHEDULE_TYPE_PERIODIC, @@ -2298,7 +2301,7 @@ int save_session(struct ltt_session *session, if (!session_access_ok(session, LTTNG_SOCK_GET_UID_CRED(creds), - LTTNG_SOCK_GET_GID_CRED(creds))) { + LTTNG_SOCK_GET_GID_CRED(creds)) || session->destroyed) { ret = LTTNG_ERR_EPERM; goto end; } @@ -2524,6 +2527,7 @@ int cmd_save_sessions(struct lttng_save_session_attr *attr, session_lock(session); ret = save_session(session, attr, creds); session_unlock(session); + session_put(session); if (ret) { goto end; } @@ -2531,10 +2535,13 @@ int cmd_save_sessions(struct lttng_save_session_attr *attr, struct ltt_session_list *list = session_get_list(); cds_list_for_each_entry(session, &list->head, list) { + if (!session_get(session)) { + continue; + } session_lock(session); ret = save_session(session, attr, creds); session_unlock(session); - + session_put(session); /* Don't abort if we don't have the required permissions. */ if (ret && ret != LTTNG_ERR_EPERM) { goto end;