From: Oleksii Kurochko Date: Tue, 6 Aug 2024 06:36:29 +0000 (+0200) Subject: xen/riscv: refactor decode_trap_cause() X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=10eccbb821cbd0d623ba3cb68a01dfb79c39ea48;p=people%2Faperard%2Fxen-unstable.git xen/riscv: refactor decode_trap_cause() Use array_access_nospec() to prevent guest speculation. Avoid double access of trap_causes[cause]. Suggested-by: Jan Beulich Signed-off-by: Oleksii Kurochko Reviewed-by: Jan Beulich --- diff --git a/xen/arch/riscv/traps.c b/xen/arch/riscv/traps.c index cb18b30ff2..7149504ebc 100644 --- a/xen/arch/riscv/traps.c +++ b/xen/arch/riscv/traps.c @@ -6,6 +6,7 @@ */ #include +#include #include #include @@ -47,9 +48,11 @@ static const char *decode_trap_cause(unsigned long cause) [CAUSE_STORE_GUEST_PAGE_FAULT] = "Guest Store/AMO Page Fault", }; - if ( cause < ARRAY_SIZE(trap_causes) && trap_causes[cause] ) - return trap_causes[cause]; - return "UNKNOWN"; + const char *res = cause < ARRAY_SIZE(trap_causes) + ? array_access_nospec(trap_causes, cause) + : NULL; + + return res ?: "UNKNOWN"; } static const char *decode_reserved_interrupt_cause(unsigned long irq_cause)