diff options
author | Xiang W <wxjstz@126.com> | 2024-05-03 21:53:36 +0800 |
---|---|---|
committer | Anup Patel <anup@brainfault.org> | 2024-05-13 16:39:39 +0530 |
commit | e065c3cd5d31314e50f4dca21f181b6a93fe0d45 (patch) | |
tree | 3612b0398d982af2272f017c466bd64c5a5dd4a2 /lib/sbi | |
parent | 7f54527029d0b6c52dc22dade9e9de37831b1ef0 (diff) | |
download | opensbi-e065c3cd5d31314e50f4dca21f181b6a93fe0d45.zip opensbi-e065c3cd5d31314e50f4dca21f181b6a93fe0d45.tar.gz opensbi-e065c3cd5d31314e50f4dca21f181b6a93fe0d45.tar.bz2 |
lib: sbi: Fixed memory permission check in sbi_dbtr_setup_shmem
The previous code detected shmem_phys_hi and shmem_phys_lo as two
addresses. fix this bug
Signed-off-by: Xiang W <wxjstz@126.com>
Reviewed-by: Himanshu Chauhan <hchauhan@ventanamicro.com>
Diffstat (limited to 'lib/sbi')
-rw-r--r-- | lib/sbi/sbi_dbtr.c | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/lib/sbi/sbi_dbtr.c b/lib/sbi/sbi_dbtr.c index 94fd049..a95f087 100644 --- a/lib/sbi/sbi_dbtr.c +++ b/lib/sbi/sbi_dbtr.c @@ -293,17 +293,11 @@ int sbi_dbtr_setup_shmem(const struct sbi_domain *dom, unsigned long smode, if (shmem_phys_lo & SBI_DBTR_SHMEM_ALIGN_MASK) return SBI_ERR_INVALID_PARAM; - if (dom && !sbi_domain_check_addr(dom, shmem_phys_lo, smode, - SBI_DOMAIN_READ | SBI_DOMAIN_WRITE)) + if (dom && !sbi_domain_check_addr(dom, + DBTR_SHMEM_MAKE_PHYS(shmem_phys_hi, shmem_phys_lo), smode, + SBI_DOMAIN_READ | SBI_DOMAIN_WRITE)) return SBI_ERR_INVALID_ADDRESS; - if (shmem_phys_hi != SBI_DBTR_SHMEM_INVALID_ADDR) { - if (dom && - !sbi_domain_check_addr(dom, shmem_phys_hi, smode, - SBI_DOMAIN_READ | SBI_DOMAIN_WRITE)) - return SBI_ERR_INVALID_ADDRESS; - } - hart_state = dbtr_thishart_state_ptr(); if (!hart_state) return SBI_ERR_FAILED; |