From c13a60ce72aaf5b07b93977ab86e7522d167ec28 Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Thu, 12 Oct 2017 10:54:27 -0600 Subject: [PATCH] flow: fix bad overflowing math No point in multiplying with a 1/-1 integer, just assign a local variable appropriately. Signed-off-by: Jens Axboe --- flow.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/flow.c b/flow.c index 42b6dd75..384187ef 100644 --- a/flow.c +++ b/flow.c @@ -16,13 +16,17 @@ static struct fio_mutex *flow_lock; int flow_threshold_exceeded(struct thread_data *td) { struct fio_flow *flow = td->flow; - int sign; + long long flow_counter; if (!flow) return 0; - sign = td->o.flow > 0 ? 1 : -1; - if (sign * flow->flow_counter > td->o.flow_watermark) { + if (td->o.flow > 0) + flow_counter = flow->flow_counter; + else + flow_counter = -flow->flow_counter; + + if (flow_counter > td->o.flow_watermark) { if (td->o.flow_sleep) { io_u_quiesce(td); usleep(td->o.flow_sleep); -- 2.25.1