[lttng-dev] [PATCH lttng-tools 1/1] Fix: consumer snapshot: handle unsigned long overflow
Jérémie Galarneau
jeremie.galarneau at efficios.com
Fri Mar 29 14:37:35 EDT 2019
Merged in master, stable-2.11, stable-2.10, and stable-2.9.
Thanks!
Jérémie
On Tue, Feb 19, 2019 at 05:47:49PM -0500, Mathieu Desnoyers wrote:
> Comparing the consumed iterator and the produced position without
> using a difference generates an empty snapshot when the iterator is
> before unsigned long overflow and the produced position is after
> unsigned long overflow.
>
> This applies to both UST and kernel consumers.
>
> Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers at efficios.com>
> ---
> src/common/kernel-consumer/kernel-consumer.c | 2 +-
> src/common/ust-consumer/ust-consumer.c | 2 +-
> 2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/src/common/kernel-consumer/kernel-consumer.c b/src/common/kernel-consumer/kernel-consumer.c
> index 9bed7b55..1533e9ef 100644
> --- a/src/common/kernel-consumer/kernel-consumer.c
> +++ b/src/common/kernel-consumer/kernel-consumer.c
> @@ -234,7 +234,7 @@ int lttng_kconsumer_snapshot_channel(struct lttng_consumer_channel *channel,
> produced_pos, nb_packets_per_stream,
> stream->max_sb_size);
>
> - while (consumed_pos < produced_pos) {
> + while ((long) (consumed_pos - produced_pos) < 0) {
> ssize_t read_len;
> unsigned long len, padded_len;
>
> diff --git a/src/common/ust-consumer/ust-consumer.c b/src/common/ust-consumer/ust-consumer.c
> index 46f33005..94b761cb 100644
> --- a/src/common/ust-consumer/ust-consumer.c
> +++ b/src/common/ust-consumer/ust-consumer.c
> @@ -1168,7 +1168,7 @@ static int snapshot_channel(struct lttng_consumer_channel *channel,
> produced_pos, nb_packets_per_stream,
> stream->max_sb_size);
>
> - while (consumed_pos < produced_pos) {
> + while ((long) (consumed_pos - produced_pos) < 0) {
> ssize_t read_len;
> unsigned long len, padded_len;
>
> --
> 2.11.0
>
More information about the lttng-dev
mailing list