diff options
| author | Ricardo Ribalda <ribalda@chromium.org> | 2026-06-29 11:30:45 +0000 |
|---|---|---|
| committer | Hans Verkuil <hverkuil+cisco@kernel.org> | 2026-07-10 14:17:56 +0200 |
| commit | 6b8ff734124a0ecccdbe3e315f6eb37315dbe5ee (patch) | |
| tree | 35bb112d2f2c467feda04ca5dfb789478a51a206 /drivers | |
| parent | 91624e58060476381f74c4e3da3fad017fba24d9 (diff) | |
| download | linux-next-6b8ff734124a0ecccdbe3e315f6eb37315dbe5ee.tar.gz linux-next-6b8ff734124a0ecccdbe3e315f6eb37315dbe5ee.zip | |
media: vimc: Ensure that pixel_rate fits in 32 bits
pixel_rate is set to VIMC_PIXEL_RATE_FIXED, which the code expects to
fit in 32 bits. Make that constraint into a WARN_ON, so if we ever break
that constraint a kernel warning will be triggered.
It also fixes the following cocci warning:
./test-drivers/vimc/vimc-sensor.c:107:1-7: WARNING: do_div() does a 64-by-32 division, please consider using div64_u64 instead.
Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/media/test-drivers/vimc/vimc-sensor.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/media/test-drivers/vimc/vimc-sensor.c b/drivers/media/test-drivers/vimc/vimc-sensor.c index d125a79fec8c..83dcc9d61ee0 100644 --- a/drivers/media/test-drivers/vimc/vimc-sensor.c +++ b/drivers/media/test-drivers/vimc/vimc-sensor.c @@ -103,8 +103,12 @@ static void vimc_sensor_update_frame_timing(struct v4l2_subdev *sd, u64 total_pixels = (u64)hts * vts; u64 frame_interval_ns; + /* Sanity check, pixel rate is fixed and fits in 32 bits. */ + if (WARN_ON(pixel_rate >= 0x100000000)) + return; + frame_interval_ns = total_pixels * NSEC_PER_SEC; - do_div(frame_interval_ns, pixel_rate); + do_div(frame_interval_ns, (u32)pixel_rate); vsensor->hw.fps_jiffies = nsecs_to_jiffies(frame_interval_ns); if (vsensor->hw.fps_jiffies == 0) vsensor->hw.fps_jiffies = 1; |
