media: ts2020: avoid integer overflows on 32 bit machines
commit 81742be14b6a90c9fd0ff6eb4218bdf696ad8e46 upstream. Before this patch, when compiled for arm32, the signal strength were reported as: Lock (0x1f) Signal= 4294908.66dBm C/N= 12.79dB Because of a 32 bit integer overflow. After it, it is properly reported as: Lock (0x1f) Signal= -58.64dBm C/N= 12.79dB Fixes: 0f91c9d6bab9 ("[media] TS2020: Calculate tuner gain correctly") Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
febb867324
commit
6b3bfe719b
@ -369,7 +369,7 @@ static int ts2020_read_tuner_gain(struct dvb_frontend *fe, unsigned v_agc,
|
||||
gain2 = clamp_t(long, gain2, 0, 13);
|
||||
v_agc = clamp_t(long, v_agc, 400, 1100);
|
||||
|
||||
*_gain = -(gain1 * 2330 +
|
||||
*_gain = -((__s64)gain1 * 2330 +
|
||||
gain2 * 3500 +
|
||||
v_agc * 24 / 10 * 10 +
|
||||
10000);
|
||||
@ -387,7 +387,7 @@ static int ts2020_read_tuner_gain(struct dvb_frontend *fe, unsigned v_agc,
|
||||
gain3 = clamp_t(long, gain3, 0, 6);
|
||||
v_agc = clamp_t(long, v_agc, 600, 1600);
|
||||
|
||||
*_gain = -(gain1 * 2650 +
|
||||
*_gain = -((__s64)gain1 * 2650 +
|
||||
gain2 * 3380 +
|
||||
gain3 * 2850 +
|
||||
v_agc * 176 / 100 * 10 -
|
||||
|
Loading…
x
Reference in New Issue
Block a user