]> git.baikalelectronics.ru Git - kernel.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)
committerThomas Bogendoerfer <tsbogend@alpha.franken.de>
Tue, 2 Nov 2021 09:53:52 +0000 (10:53 +0100)
commit2a7d51981ebe1711e0642fb69a025e511581832c
treec2f63738a41f0a89a85979b9b0a38730f958f365
parentcad05b9f719c439e9408209e5b03fe8efa1218b3
mips: cm: Convert to bitfield API to fix out-of-bounds access

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: d59b4ab815bbf7b1 ("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>
arch/mips/include/asm/mips-cm.h
arch/mips/kernel/mips-cm.c