lib: sbi: check result of pmp_get() in is_pmp_entry_mapped()

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@gmail.com>
Reviewed-by: Anup Patel <anup@brainfault.org>
This commit is contained in:
Carlos López
2024-08-01 14:58:52 +02:00
committed by Anup Patel
parent cb0f4757fc
commit 43cace6c36

View File

@@ -291,7 +291,8 @@ int is_pmp_entry_mapped(unsigned long entry)
unsigned long addr; unsigned long addr;
unsigned long log2len; 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 address matching bits are non-zero, the entry is enable */
if (prot & PMP_A) if (prot & PMP_A)