lib: sbi: sse: check handler entry to belong to supervisor mode

When registering an SSE event, check for the handler_entry_pc to belong
to supervisor mode domain using sbi_domain_check_addr_range().

Signed-off-by: Clément Léger <cleger@rivosinc.com>
Reported-by: Samuel Holland <samuel.holland@sifive.com>
Reviewed-by: Anup Patel <anup@brainfault.org>
This commit is contained in:
Clément Léger
2024-04-09 12:02:08 +02:00
committed by Anup Patel
parent bd007658f8
commit 033104da08

View File

@@ -959,6 +959,12 @@ int sbi_sse_register(uint32_t event_id, unsigned long handler_entry_pc,
if (handler_entry_pc & 0x1)
return SBI_EINVAL;
if (!sbi_domain_check_addr_range(sbi_domain_thishart_ptr(),
handler_entry_pc,
sizeof(unsigned long), PRV_S,
SBI_DOMAIN_EXECUTE))
return SBI_EINVALID_ADDR;
e = sse_event_get(event_id);
if (!e)
return SBI_EINVAL;