]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
media: tegra-video: vi: fix invalid u32 return value in format lookup
authorHungyu Lin <dennylin0707@gmail.com>
Thu, 7 May 2026 02:22:13 +0000 (02:22 +0000)
committerHans Verkuil <hverkuil+cisco@kernel.org>
Tue, 12 May 2026 07:39:02 +0000 (09:39 +0200)
tegra_get_format_fourcc_by_idx() returns a u32 but uses -EINVAL to
signal an out-of-bounds index. This results in a large unsigned
value being returned, which may be interpreted as a valid fourcc.

Returning 0 is not a valid fourcc either. This condition should
never happen, so use WARN_ON_ONCE() to catch unexpected out-of-bounds
access and return a valid fallback format instead.

Suggested-by: Hans Verkuil <hverkuil+cisco@kernel.org>
Fixes: 3d8a97eabef0 ("media: tegra-video: Add Tegra210 Video input driver")
Cc: stable@vger.kernel.org
Reviewed-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
Signed-off-by: Hungyu Lin <dennylin0707@gmail.com>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
drivers/staging/media/tegra-video/vi.c

index f14cdc7b521138b6505904ee86cb8cf64222a970..456134a9e8cf2600c8c0841a1a06562e88bed3c1 100644 (file)
@@ -80,8 +80,8 @@ static int tegra_get_format_idx_by_code(struct tegra_vi *vi,
 static u32 tegra_get_format_fourcc_by_idx(struct tegra_vi *vi,
                                          unsigned int index)
 {
-       if (index >= vi->soc->nformats)
-               return -EINVAL;
+       if (WARN_ON_ONCE(index >= vi->soc->nformats))
+               return vi->soc->video_formats[0].fourcc;
 
        return vi->soc->video_formats[index].fourcc;
 }