]> git.hungrycats.org Git - linux/commitdiff
media: ar0521: don't overflow when checking PLL values
authorMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Tue, 15 Oct 2024 09:38:10 +0000 (11:38 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 14 Nov 2024 12:15:13 +0000 (13:15 +0100)
commit 438d3085ba5b8b5bfa5290faa594e577f6ac9aa7 upstream.

The PLL checks are comparing 64 bit integers with 32 bit
ones, as reported by Coverity. Depending on the values of
the variables, this may underflow.

Fix it ensuring that both sides of the expression are u64.

Fixes: 852b50aeed15 ("media: On Semi AR0521 sensor driver")
Cc: stable@vger.kernel.org
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/media/i2c/ar0521.c

index 02856a733238c334c441f900ca1df599ba69fc16..1ede57958410cf762166aa94209fd4d6c2e153ee 100644 (file)
@@ -223,10 +223,10 @@ static u32 calc_pll(struct ar0521_dev *sensor, int num, u32 freq, u16 *pre_ptr,
                        continue; /* Minimum value */
                if (new_mult > 254)
                        break; /* Maximum, larger pre won't work either */
-               if (sensor->extclk_freq * (u64)new_mult < AR0521_PLL_MIN *
+               if (sensor->extclk_freq * (u64)new_mult < (u64)AR0521_PLL_MIN *
                    new_pre)
                        continue;
-               if (sensor->extclk_freq * (u64)new_mult > AR0521_PLL_MAX *
+               if (sensor->extclk_freq * (u64)new_mult > (u64)AR0521_PLL_MAX *
                    new_pre)
                        break; /* Larger pre won't work either */
                new_pll = div64_round_up(sensor->extclk_freq * (u64)new_mult,