Multiplication of two 32 bit values can overflow the 32 bit result. Cast
one of the multiplicants to force 64 bit multiplication.
This fixes a lockup due to an infinite loop in the following while().
In-collaboration-with: aggelos
tdio->interval_avg_latency = tdio->avg_latency;
tdio->interval_transactions = tdio->transactions;
if (tdio->interval_transactions > 0) {
- product = tdio->interval_avg_latency * tdio->interval_transactions;
+ product = (int64_t)tdio->interval_avg_latency *
+ tdio->interval_transactions;
product >>= lost_bits;
while(total_budget >= INT64_MAX - product) {
++lost_bits;