[lttng-dev] [PATCH lttng-tools] Fix: do not repurpose iterator while it is being used
Jérémie Galarneau
jeremie.galarneau at efficios.com
Tue Jan 22 15:35:04 EST 2019
Merged in master and stable-2.11.
Thanks,
Jérémie
On Wed, 12 Dec 2018 at 17:24, Mathieu Desnoyers
<mathieu.desnoyers at efficios.com> wrote:
>
> The hash table iteration uses an iterator that needs to stay valid for
> the next loop. Using that same iterator variable in a nested lookup
> in a different hash table leads to segmentation fault.
>
> Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers at efficios.com>
> ---
> src/bin/lttng-sessiond/notification-thread-events.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/src/bin/lttng-sessiond/notification-thread-events.c b/src/bin/lttng-sessiond/notification-thread-events.c
> index 9cc91cc4..9d82b831 100644
> --- a/src/bin/lttng-sessiond/notification-thread-events.c
> +++ b/src/bin/lttng-sessiond/notification-thread-events.c
> @@ -1931,6 +1931,7 @@ int bind_trigger_to_matching_channels(const struct lttng_trigger *trigger,
> channels_ht_node) {
> struct lttng_trigger_list_element *trigger_list_element;
> struct lttng_channel_trigger_list *trigger_list;
> + struct cds_lfht_iter lookup_iter;
>
> if (!trigger_applies_to_channel(trigger, channel)) {
> continue;
> @@ -1940,8 +1941,8 @@ int bind_trigger_to_matching_channels(const struct lttng_trigger *trigger,
> hash_channel_key(&channel->key),
> match_channel_trigger_list,
> &channel->key,
> - &iter);
> - node = cds_lfht_iter_get_node(&iter);
> + &lookup_iter);
> + node = cds_lfht_iter_get_node(&lookup_iter);
> assert(node);
> trigger_list = caa_container_of(node,
> struct lttng_channel_trigger_list,
> --
> 2.11.0
>
--
Jérémie Galarneau
EfficiOS Inc.
http://www.efficios.com
More information about the lttng-dev
mailing list