Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

media: i2c: ov9650: fix potential integer overflow in __ov965x_set_frame_interval

Cast fi->interval.numerator to u64 in order to avoid a potential integer
overflow. This variable is being used in a context that expects an
expression of type u64.

Addresses-Coverity-ID: 1324146 ("Unintentional integer overflow")
[Sakari Ailus: use do_div() to make this work on 32-bit systems]

Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>

authored by

Gustavo A. R. Silva and committed by
Mauro Carvalho Chehab
36e49ffb b1f5d0ae

+2 -2
+2 -2
drivers/media/i2c/ov9650.c
··· 1136 1136 if (fi->interval.denominator == 0) 1137 1137 return -EINVAL; 1138 1138 1139 - req_int = (u64)(fi->interval.numerator * 10000) / 1140 - fi->interval.denominator; 1139 + req_int = (u64)fi->interval.numerator * 10000; 1140 + do_div(req_int, fi->interval.denominator); 1141 1141 1142 1142 for (i = 0; i < ARRAY_SIZE(ov965x_intervals); i++) { 1143 1143 const struct ov965x_interval *iv = &ov965x_intervals[i];