summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorAntti Palosaari <crope@iki.fi>2014-08-21 14:02:27 -0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-11-14 08:59:54 -0800
commit5b1a2427d4db51cf4a7094c408dc1f9277980ce0 (patch)
tree6160414d00962724aa1c5ad31995abf1cab7f947 /drivers
parent2589a22324a0dd1c869f91d276e07248c31aa68a (diff)
downloadlinux-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.c2
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);