Commit e8df0d9f authored by Antti Palosaari's avatar Antti Palosaari Committed by Luis Henriques

[media] m88ts2022: fix 32bit overflow on filter calc

commit f538e085 upstream.

Maximum satellite symbol rate used is 45000000Sps which overflows
when multiplied by 135. As final calculation result is fraction,
we could use mult_frac macro in order to keep calculation inside
32 bit number limits and prevent overflow.

Original bug and fix was provided by Nibble Max. I decided to
implement it differently as it is now.
Reported-by: default avatarNibble Max <nibble.max@gmail.com>
Tested-by: default avatarNibble Max <nibble.max@gmail.com>
Signed-off-by: default avatarAntti Palosaari <crope@iki.fi>
Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
Signed-off-by: default avatarLuis Henriques <luis.henriques@canonical.com>
parent eb64a603
...@@ -314,7 +314,7 @@ static int m88ts2022_set_params(struct dvb_frontend *fe) ...@@ -314,7 +314,7 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
div_min = gdiv28 * 78 / 100; div_min = gdiv28 * 78 / 100;
div_max = clamp_val(div_max, 0U, 63U); div_max = clamp_val(div_max, 0U, 63U);
f_3db_hz = c->symbol_rate * 135UL / 200UL; f_3db_hz = mult_frac(c->symbol_rate, 135, 200);
f_3db_hz += 2000000U + (frequency_offset_khz * 1000U); f_3db_hz += 2000000U + (frequency_offset_khz * 1000U);
f_3db_hz = clamp(f_3db_hz, 7000000U, 40000000U); f_3db_hz = clamp(f_3db_hz, 7000000U, 40000000U);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment