[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v12 3/3] 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 <jbeulich@xxxxxxxx> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@xxxxxxxxx> --- Changes in V12: - New patch. --- xen/arch/riscv/traps.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/xen/arch/riscv/traps.c b/xen/arch/riscv/traps.c index 72ffdcd79e..51f6e45ccc 100644 --- a/xen/arch/riscv/traps.c +++ b/xen/arch/riscv/traps.c @@ -7,6 +7,7 @@ #include <xen/bug.h> #include <xen/lib.h> +#include <xen/nospec.h> #include <xen/sched.h> #include <asm/processor.h> @@ -48,9 +49,10 @@ 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) -- 2.45.2
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |