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: Gustavo A. R. Silva <gustavo@embeddedor.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
This commit is contained in:
committed by
Mauro Carvalho Chehab
parent
d13a0139d7
commit
1ae207fa7b
@@ -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)
|
|||||||
* / (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;
|
||||||
|
|||||||
Reference in New Issue
Block a user