aboutsummaryrefslogtreecommitdiff
path: root/include/sbi
diff options
context:
space:
mode:
authorMayuresh Chitale <mchitale@ventanamicro.com>2023-09-07 17:19:41 +0530
committerAnup Patel <anup@brainfault.org>2023-09-24 16:27:02 +0530
commitb8fb96eceba546de7f36afd56a76a1e36fabcc77 (patch)
tree764de960481a19be7f9dee3216da0edd17178bff /include/sbi
parent9560fb38febf6e74d30a2c22e020b0e0dece8d49 (diff)
downloadopensbi-b8fb96eceba546de7f36afd56a76a1e36fabcc77.zip
opensbi-b8fb96eceba546de7f36afd56a76a1e36fabcc77.tar.gz
opensbi-b8fb96eceba546de7f36afd56a76a1e36fabcc77.tar.bz2
include: sbi_domain: Fix permission test macros
The macros to test permissions must perform an exact match of all the bits in the input with the desired permission bits. Otherwise, the check returns false positives in those cases where only some of the desired permissions are set in the input. Fixes: 6c202c5 ("include: sbi: Add Smepmp specific access flags for PMP entries") Signed-off-by: Mayuresh Chitale <mchitale@ventanamicro.com> Reviewed-by: Anup Patel <anup@brainfault.org>
Diffstat (limited to 'include/sbi')
-rw-r--r--include/sbi/sbi_domain.h34
1 files changed, 15 insertions, 19 deletions
diff --git a/include/sbi/sbi_domain.h b/include/sbi/sbi_domain.h
index e10daff..c88dbac 100644
--- a/include/sbi/sbi_domain.h
+++ b/include/sbi/sbi_domain.h
@@ -74,33 +74,29 @@ struct sbi_domain_memregion {
SBI_DOMAIN_MEMREGION_SU_READABLE)
/* Shared read-only region between M and SU mode */
-#define SBI_DOMAIN_MEMREGION_IS_SUR_MR(__flags) \
- ((__flags & SBI_DOMAIN_MEMREGION_M_READABLE) && \
- (__flags & SBI_DOMAIN_MEMREGION_SU_READABLE))
+#define SBI_DOMAIN_MEMREGION_IS_SUR_MR(__flags) \
+ ((__flags & SBI_DOMAIN_MEMREGION_ACCESS_MASK) == \
+ SBI_DOMAIN_MEMREGION_SHARED_RDONLY)
/* Shared region: SU execute-only and M read/execute */
-#define SBI_DOMAIN_MEMREGION_IS_SUX_MRX(__flags) \
- ((__flags & SBI_DOMAIN_MEMREGION_M_READABLE) && \
- (__flags & SBI_DOMAIN_MEMREGION_M_EXECUTABLE) && \
- (__flags & SBI_DOMAIN_MEMREGION_SU_EXECUTABLE))
+#define SBI_DOMAIN_MEMREGION_IS_SUX_MRX(__flags) \
+ ((__flags & SBI_DOMAIN_MEMREGION_ACCESS_MASK) == \
+ SBI_DOMAIN_MEMREGION_SHARED_SUX_MRX)
/* Shared region: SU and M execute-only */
-#define SBI_DOMAIN_MEMREGION_IS_SUX_MX(__flags) \
- ((__flags & SBI_DOMAIN_MEMREGION_M_EXECUTABLE) && \
- (__flags & SBI_DOMAIN_MEMREGION_SU_EXECUTABLE))
+#define SBI_DOMAIN_MEMREGION_IS_SUX_MX(__flags) \
+ ((__flags & SBI_DOMAIN_MEMREGION_ACCESS_MASK) == \
+ SBI_DOMAIN_MEMREGION_SHARED_SUX_MX)
/* Shared region: SU and M read/write */
-#define SBI_DOMAIN_MEMREGION_IS_SURW_MRW(__flags) \
- ((__flags & SBI_DOMAIN_MEMREGION_M_READABLE) && \
- (__flags & SBI_DOMAIN_MEMREGION_M_WRITABLE) && \
- (__flags & SBI_DOMAIN_MEMREGION_SU_READABLE) & \
- (__flags & SBI_DOMAIN_MEMREGION_SU_WRITABLE))
+#define SBI_DOMAIN_MEMREGION_IS_SURW_MRW(__flags) \
+ ((__flags & SBI_DOMAIN_MEMREGION_ACCESS_MASK) == \
+ SBI_DOMAIN_MEMREGION_SHARED_SURW_MRW)
/* Shared region: SU read-only and M read/write */
-#define SBI_DOMAIN_MEMREGION_IS_SUR_MRW(__flags) \
- ((__flags & SBI_DOMAIN_MEMREGION_M_READABLE) && \
- (__flags & SBI_DOMAIN_MEMREGION_M_WRITABLE) && \
- (__flags & SBI_DOMAIN_MEMREGION_SU_READABLE))
+#define SBI_DOMAIN_MEMREGION_IS_SUR_MRW(__flags) \
+ ((__flags & SBI_DOMAIN_MEMREGION_ACCESS_MASK) == \
+ SBI_DOMAIN_MEMREGION_SHARED_SUR_MRW)
/*
* Check if region flags match with any of the above