From: Jens Axboe Date: Thu, 12 Oct 2017 16:54:27 +0000 (-0600) Subject: flow: fix bad overflowing math X-Git-Tag: fio-3.2~27 X-Git-Url: https://git.kernel.dk/?p=fio.git;a=commitdiff_plain;h=c13a60ce72aaf5b07b93977ab86e7522d167ec28 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 --- 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);