X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Ftrace-ust.c;h=92fd0de8116b0d00500d0f5b324f1d88e0bb049f;hp=4a7e2610510cd805722315add867db300ea66823;hb=640b9481e1805d314256361ed49d55dcc35d6172;hpb=2d97a0067600335f07eecb2c1d9ba68fc164583e diff --git a/src/bin/lttng-sessiond/trace-ust.c b/src/bin/lttng-sessiond/trace-ust.c index 4a7e26105..92fd0de81 100644 --- a/src/bin/lttng-sessiond/trace-ust.c +++ b/src/bin/lttng-sessiond/trace-ust.c @@ -1,19 +1,9 @@ /* - * Copyright (C) 2011 - David Goulet - * Copyright (C) 2016 - Jérémie Galarneau + * Copyright (C) 2011 David Goulet + * Copyright (C) 2016 Jérémie Galarneau * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License, version 2 only, - * as published by the Free Software Foundation. + * SPDX-License-Identifier: GPL-2.0-only * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #define _LGPL_SOURCE @@ -918,8 +908,7 @@ int trace_ust_track_id(enum lttng_tracker_type tracker_type, struct ust_id_tracker *id_tracker; struct lttng_tracker_list *tracker_list; int value; - struct lttng_tracker_id **saved_ids; - ssize_t saved_ids_count; + struct lttng_tracker_ids *saved_ids; if (tracker_type == LTTNG_TRACKER_PID) { DBG("Backward compatible behavior: translate PID tracker to VPID tracker for UST domain."); @@ -935,8 +924,8 @@ int trace_ust_track_id(enum lttng_tracker_type tracker_type, return LTTNG_ERR_INVALID; } /* Save list for restore on error. */ - saved_ids_count = lttng_tracker_id_get_list(tracker_list, &saved_ids); - if (saved_ids_count < 0) { + retval = lttng_tracker_id_get_list(tracker_list, &saved_ids); + if (retval != LTTNG_OK) { return LTTNG_ERR_INVALID; } /* Add to list. */ @@ -997,13 +986,11 @@ int trace_ust_track_id(enum lttng_tracker_type tracker_type, goto end; end_restore: - if (lttng_tracker_id_set_list(tracker_list, saved_ids, - saved_ids_count) != LTTNG_OK) { + if (lttng_tracker_id_set_list(tracker_list, saved_ids) != LTTNG_OK) { ERR("Error on tracker add error handling.\n"); } end: - lttng_tracker_ids_destroy(saved_ids, saved_ids_count); - free(saved_ids); + lttng_tracker_ids_destroy(saved_ids); return retval; } @@ -1019,8 +1006,7 @@ int trace_ust_untrack_id(enum lttng_tracker_type tracker_type, struct ust_id_tracker *id_tracker; struct lttng_tracker_list *tracker_list; int value; - struct lttng_tracker_id **saved_ids; - ssize_t saved_ids_count; + struct lttng_tracker_ids *saved_ids; if (tracker_type == LTTNG_TRACKER_PID) { DBG("Backward compatible behavior: translate PID tracker to VPID tracker for UST domain."); @@ -1037,8 +1023,8 @@ int trace_ust_untrack_id(enum lttng_tracker_type tracker_type, return LTTNG_ERR_INVALID; } /* Save list for restore on error. */ - saved_ids_count = lttng_tracker_id_get_list(tracker_list, &saved_ids); - if (saved_ids_count < 0) { + retval = lttng_tracker_id_get_list(tracker_list, &saved_ids); + if (retval != LTTNG_OK) { return LTTNG_ERR_INVALID; } /* Remove from list. */ @@ -1100,23 +1086,22 @@ int trace_ust_untrack_id(enum lttng_tracker_type tracker_type, goto end; end_restore: - if (lttng_tracker_id_set_list(tracker_list, saved_ids, - saved_ids_count) != LTTNG_OK) { + if (lttng_tracker_id_set_list(tracker_list, saved_ids) != LTTNG_OK) { ERR("Error on tracker remove error handling.\n"); } end: - lttng_tracker_ids_destroy(saved_ids, saved_ids_count); - free(saved_ids); + lttng_tracker_ids_destroy(saved_ids); return retval; } /* * Called with session lock held. */ -ssize_t trace_ust_list_tracker_ids(enum lttng_tracker_type tracker_type, +int trace_ust_list_tracker_ids(enum lttng_tracker_type tracker_type, struct ltt_ust_session *session, - struct lttng_tracker_id ***_ids) + struct lttng_tracker_ids **_ids) { + int ret = LTTNG_OK; struct lttng_tracker_list *tracker_list; if (tracker_type == LTTNG_TRACKER_PID) { @@ -1126,9 +1111,17 @@ ssize_t trace_ust_list_tracker_ids(enum lttng_tracker_type tracker_type, tracker_list = get_id_tracker_list(session, tracker_type); if (!tracker_list) { - return -LTTNG_ERR_INVALID; + ret = -LTTNG_ERR_INVALID; + goto end; } - return lttng_tracker_id_get_list(tracker_list, _ids); + + ret = lttng_tracker_id_get_list(tracker_list, _ids); + if (ret != LTTNG_OK) { + ret = -LTTNG_ERR_INVALID; + goto end; + } +end: + return ret; } /*