]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
mips: cm: Convert to bitfield API to fix out-of-bounds access
authorGeert Uytterhoeven <geert+renesas@glider.be>
Fri, 29 Oct 2021 09:58:16 +0000 (11:58 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 26 Nov 2021 10:36:14 +0000 (11:36 +0100)
commit96be0f7cadae2478dcd4ffa851a98928d45347bf
tree11e7322d1af45b40c38ecfe288e3c82299537217
parentda942ccbc00d848a0505d564a1bd43bb0ec5fe11
mips: cm: Convert to bitfield API to fix out-of-bounds access

[ Upstream commit 18b8f5b6fc53d097cadb94a93d8d6566ba88e389 ]

mips_cm_error_report() extracts the cause and other cause from the error
register using shifts.  This works fine for the former, as it is stored
in the top bits, and the shift will thus remove all non-related bits.
However, the latter is stored in the bottom bits, hence thus needs masking
to get rid of non-related bits.  Without such masking, using it as an
index into the cm2_causes[] array will lead to an out-of-bounds access,
probably causing a crash.

Fix this by using FIELD_GET() instead.  Bite the bullet and convert all
MIPS CM handling to the bitfield API, to improve readability and safety.

Fixes: 3885c2b463f6a236 ("MIPS: CM: Add support for reporting CM cache errors")
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/mips/include/asm/mips-cm.h
arch/mips/kernel/mips-cm.c