media: amphion: ensure the bitops don't cross boundaries
authorMing Qian <ming.qian@nxp.com>
Tue, 18 Jul 2023 09:50:13 +0000 (17:50 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 13 Sep 2023 07:42:51 +0000 (09:42 +0200)
[ Upstream commit 5bd28eae48589694ff4e5badb03bf75dae695b3f ]

the supported_instance_count determine the instance index range,
it shouldn't exceed the bits number of instance_mask,
otherwise the bitops of instance_mask may cross boundaries

Fixes: 9f599f351e86 ("media: amphion: add vpu core driver")
Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Ming Qian <ming.qian@nxp.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/media/platform/amphion/vpu_core.c

index be80410..9add73b 100644 (file)
@@ -88,6 +88,8 @@ static int vpu_core_boot_done(struct vpu_core *core)
 
                core->supported_instance_count = min(core->supported_instance_count, count);
        }
+       if (core->supported_instance_count >= BITS_PER_TYPE(core->instance_mask))
+               core->supported_instance_count = BITS_PER_TYPE(core->instance_mask);
        core->fw_version = fw_version;
        vpu_core_set_state(core, VPU_CORE_ACTIVE);