OSDN Git Service

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:05:15 +0000 (09:05 +0200)
commit26311fa940bb07c553aa1c60244ef9ca6883cf87
tree693a9066feae1ae872007147e4d89b886856cc13
parentb0687a01d693de6f482655f979f4979b1011a013
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