Commit 1ae207fa authored by Gustavo A. R. Silva's avatar Gustavo A. R. Silva Committed by Mauro Carvalho Chehab

media: rtl2832: use 64-bit arithmetic instead of 32-bit in rtl2832_set_frontend

Add suffix ULL to constant 7 in order to give the compiler complete
information about the proper arithmetic to use. Notice that this
constant is used in a context that expects an expression of type
u64 (64 bits, unsigned).

The expression dev->pdata->clk * 7 is currently being evaluated
using 32-bit arithmetic.

Addresses-Coverity-ID: 1271223 ("Unintentional integer overflow")
Signed-off-by: default avatarGustavo A. R. Silva <gustavo@embeddedor.com>
Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
parent d13a0139
...@@ -498,7 +498,7 @@ static int rtl2832_set_frontend(struct dvb_frontend *fe) ...@@ -498,7 +498,7 @@ static int rtl2832_set_frontend(struct dvb_frontend *fe)
* RSAMP_RATIO = floor(CrystalFreqHz * 7 * pow(2, 22) * RSAMP_RATIO = floor(CrystalFreqHz * 7 * pow(2, 22)
* / ConstWithBandwidthMode) * / ConstWithBandwidthMode)
*/ */
num = dev->pdata->clk * 7; num = dev->pdata->clk * 7ULL;
num *= 0x400000; num *= 0x400000;
num = div_u64(num, bw_mode); num = div_u64(num, bw_mode);
resamp_ratio = num & 0x3ffffff; resamp_ratio = num & 0x3ffffff;
...@@ -511,7 +511,7 @@ static int rtl2832_set_frontend(struct dvb_frontend *fe) ...@@ -511,7 +511,7 @@ static int rtl2832_set_frontend(struct dvb_frontend *fe)
* / (CrystalFreqHz * 7)) * / (CrystalFreqHz * 7))
*/ */
num = bw_mode << 20; num = bw_mode << 20;
num2 = dev->pdata->clk * 7; num2 = dev->pdata->clk * 7ULL;
num = div_u64(num, num2); num = div_u64(num, num2);
num = -num; num = -num;
cfreq_off_ratio = num & 0xfffff; cfreq_off_ratio = num & 0xfffff;
......
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