media: cec: silence shift wrapping warning in __cec_s_log_addrs()
authorDan Carpenter <dan.carpenter@oracle.com>
Tue, 5 May 2020 08:25:56 +0000 (10:25 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 22 Jun 2020 07:31:02 +0000 (09:31 +0200)
commit8ca0e780b4e88e90f933a4f4b52f82bb6d303416
tree6f581aabab2680eb95cee6392fe170b93b48d5c3
parent4f6762503fa2e42ffa9767ad8519a0e820b104f6
media: cec: silence shift wrapping warning in __cec_s_log_addrs()

[ Upstream commit 3b5af3171e2d5a73ae6f04965ed653d039904eb6 ]

The log_addrs->log_addr_type[i] value is a u8 which is controlled by
the user and comes from the ioctl.  If it's over 31 then that results in
undefined behavior (shift wrapping) and that leads to a Smatch static
checker warning.  We already cap the value later so we can silence the
warning just by re-ordering the existing checks.

I think the UBSan checker will also catch this bug at runtime and
generate a warning.  But otherwise the bug is harmless.

Fixes: 9881fe0ca187 ("[media] cec: add HDMI CEC framework (adapter)")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/media/cec/cec-adap.c