[media] m88ts2022: fix 32bit overflow on filter calc
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: Nibble Max <nibble.max@gmail.com> Tested-by: Nibble Max <nibble.max@gmail.com> Cc: <stable@kernel.org> Signed-off-by: Antti Palosaari <crope@iki.fi> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
This commit is contained in:
parent
de3f2e2e0a
commit
f538e08513
@ -314,7 +314,7 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
|
||||
div_min = gdiv28 * 78 / 100;
|
||||
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 = clamp(f_3db_hz, 7000000U, 40000000U);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user