]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
media: ccs: Avoid possible division by zero
authorSakari Ailus <sakari.ailus@linux.intel.com>
Mon, 24 Nov 2025 22:24:48 +0000 (00:24 +0200)
committerHans Verkuil <hverkuil+cisco@kernel.org>
Wed, 14 Jan 2026 22:33:02 +0000 (23:33 +0100)
Calculating maximum M for scaler configuration involves dividing by
MIN_X_OUTPUT_SIZE limit register's value. Albeit the value is presumably
non-zero, the driver was missing the check it in fact was. Fix this.

Reported-by: Josh Poimboeuf <jpoimboe@kernel.org>
Closes: https://lore.kernel.org/all/ahukd6b3wonye3zgtptvwzvrxldcruazs2exfvll6etjhmcxyj@vq3eh6pd375b/
Fixes: ccfc97bdb5ae ("[media] smiapp: Add driver")
Cc: stable@vger.kernel.org # for 5.15 and later
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Reviewed-by: Nathan Chancellor <nathan@kernel.org>
Tested-by: Nathan Chancellor <nathan@kernel.org> # build
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
drivers/media/i2c/ccs/ccs-core.c

index f8523140784c7120eaf018ffa9e3b43ea12ef72f..dadff8c506794ed54906c0cbd940dc735bf1ef43 100644 (file)
@@ -2346,7 +2346,7 @@ static void ccs_set_compose_scaler(struct v4l2_subdev *subdev,
                * CCS_LIM(sensor, SCALER_N_MIN) / sel->r.height;
        max_m = crops[CCS_PAD_SINK]->width
                * CCS_LIM(sensor, SCALER_N_MIN)
-               / CCS_LIM(sensor, MIN_X_OUTPUT_SIZE);
+               / (CCS_LIM(sensor, MIN_X_OUTPUT_SIZE) ?: 1);
 
        a = clamp(a, CCS_LIM(sensor, SCALER_M_MIN),
                  CCS_LIM(sensor, SCALER_M_MAX));