diff options
author | Antti Palosaari <crope@iki.fi> | 2014-08-21 14:02:27 -0300 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-11-14 08:59:54 -0800 |
commit | 5b1a2427d4db51cf4a7094c408dc1f9277980ce0 (patch) | |
tree | 6160414d00962724aa1c5ad31995abf1cab7f947 /drivers | |
parent | 2589a22324a0dd1c869f91d276e07248c31aa68a (diff) | |
download | linux-stable-5b1a2427d4db51cf4a7094c408dc1f9277980ce0.tar.gz linux-stable-5b1a2427d4db51cf4a7094c408dc1f9277980ce0.tar.bz2 linux-stable-5b1a2427d4db51cf4a7094c408dc1f9277980ce0.zip |
media: m88ts2022: fix 32bit overflow on filter calc
commit f538e085138e519e25ae0828bd6c6e7492ce8ca4 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: Nibble Max <nibble.max@gmail.com>
Tested-by: Nibble Max <nibble.max@gmail.com>
Signed-off-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/media/tuners/m88ts2022.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/media/tuners/m88ts2022.c b/drivers/media/tuners/m88ts2022.c index 40c42dec721b..7a62097aa9ea 100644 --- a/drivers/media/tuners/m88ts2022.c +++ b/drivers/media/tuners/m88ts2022.c @@ -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); |