[PATCH] lib: sbi: check result of pmp_get() in is_pmp_entry_mapped()
Carlos López
carlos.lopezr4096 at gmail.com
Thu Aug 1 05:58:52 PDT 2024
pmp_get() may return an error if the given entry, given by the caller
of is_pmp_entry_mapped(), is invalid. This results in the output
parameters for pmp_get() being uninitialized. To avoid using garbage
values, check the result and return early if necessary.
This issue is not being hit because at the moment
is_pmp_entry_mapped() is only being called from a single site with a
valid hardcoded value.
Signed-off-by: Carlos López <carlos.lopezr4096 at gmail.com>
---
lib/sbi/riscv_asm.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/lib/sbi/riscv_asm.c b/lib/sbi/riscv_asm.c
index 05b8c7c..c7d75ac 100644
--- a/lib/sbi/riscv_asm.c
+++ b/lib/sbi/riscv_asm.c
@@ -291,7 +291,8 @@ int is_pmp_entry_mapped(unsigned long entry)
unsigned long addr;
unsigned long log2len;
- pmp_get(entry, &prot, &addr, &log2len);
+ if (pmp_get(entry, &prot, &addr, &log2len) != 0)
+ return false;
/* If address matching bits are non-zero, the entry is enable */
if (prot & PMP_A)
--
2.39.2
More information about the opensbi
mailing list