aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCyan Yang <cyan.yang@sifive.com>2024-05-16 16:32:43 +0800
committerAnup Patel <anup@brainfault.org>2024-05-23 10:51:29 +0530
commit858754a54470ad0dbbced7838b17054ccd3b96de (patch)
tree21455af32a7d18c3850ab6d9585bd424c994e03a
parent96f0a2e3ea6dc8c337ad1b927d6bda8f5ac151be (diff)
downloadopensbi-858754a54470ad0dbbced7838b17054ccd3b96de.zip
opensbi-858754a54470ad0dbbced7838b17054ccd3b96de.tar.gz
opensbi-858754a54470ad0dbbced7838b17054ccd3b96de.tar.bz2
lib: utils/irqchip: Add sanity checks in imsic_get_data() and imsic_get_target_file()
Add extra sanity checks to prevent the caller getting the invalid result from imsic_get_data() or imsic_get_target_file() when imsic is not initialized correctly. Signed-off-by: Cyan Yang <cyan.yang@sifive.com> Reviewed-by: Anup Patel <anup@brainfault.org>
-rw-r--r--lib/utils/irqchip/imsic.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/utils/irqchip/imsic.c b/lib/utils/irqchip/imsic.c
index 02e3a33..7d6993e 100644
--- a/lib/utils/irqchip/imsic.c
+++ b/lib/utils/irqchip/imsic.c
@@ -123,6 +123,9 @@ struct imsic_data *imsic_get_data(u32 hartid)
{
struct sbi_scratch *scratch;
+ if (!imsic_ptr_offset)
+ return NULL;
+
scratch = sbi_hartid_to_scratch(hartid);
if (!scratch)
return NULL;
@@ -134,6 +137,9 @@ int imsic_get_target_file(u32 hartid)
{
struct sbi_scratch *scratch;
+ if (!imsic_file_offset)
+ return SBI_ENOENT;
+
scratch = sbi_hartid_to_scratch(hartid);
if (!scratch)
return SBI_ENOENT;