The nanoseconds part of the timespec struct time_a is not always bigger than time_b since it wrap around each seconds.
Use the absolute value of the nanosecond difference to perform unsigned long operation. Signed-off-by: Jonathan Rajotte <jonathan.rajotte-jul...@efficios.com> --- src/common/sessiond-comm/inet.c | 2 +- src/common/sessiond-comm/inet6.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/common/sessiond-comm/inet.c b/src/common/sessiond-comm/inet.c index e0b3e7a96..cb6f45357 100644 --- a/src/common/sessiond-comm/inet.c +++ b/src/common/sessiond-comm/inet.c @@ -124,7 +124,7 @@ unsigned long time_diff_ms(struct timespec *time_a, unsigned long result_ms; sec_diff = time_a->tv_sec - time_b->tv_sec; - nsec_diff = time_a->tv_nsec - time_b->tv_nsec; + nsec_diff = labs(time_a->tv_nsec - time_b->tv_nsec); result_ms = sec_diff * MSEC_PER_SEC; result_ms += nsec_diff / NSEC_PER_MSEC; diff --git a/src/common/sessiond-comm/inet6.c b/src/common/sessiond-comm/inet6.c index dfb5fc5d1..b73802d48 100644 --- a/src/common/sessiond-comm/inet6.c +++ b/src/common/sessiond-comm/inet6.c @@ -122,7 +122,7 @@ unsigned long time_diff_ms(struct timespec *time_a, unsigned long result_ms; sec_diff = time_a->tv_sec - time_b->tv_sec; - nsec_diff = time_a->tv_nsec - time_b->tv_nsec; + nsec_diff = labs(time_a->tv_nsec - time_b->tv_nsec); result_ms = sec_diff * MSEC_PER_SEC; result_ms += nsec_diff / NSEC_PER_MSEC; -- 2.17.1 _______________________________________________ lttng-dev mailing list lttng-dev@lists.lttng.org https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev