Skip to content

Commit c3b82c7

Browse files
committed
armv8m: Don't allow signed integer overflow
To avoid undefined behavior, replace the signed "times" counter with an unsigned one. We don't need to track negative times anyway. ./core/vmpu/src/mpu_armv8m/vmpu_armv8m_unpriv_access.c: In function 'vmpu_unpriv_access': ./core/vmpu/src/mpu_armv8m/vmpu_armv8m_unpriv_access.c:126:1: error: assuming signed overflow does not occur when changing X +- C1 cmp C2 to X cmp C2 -+ C1 [-Werror=strict-overflow] } ^ ./core/vmpu/src/mpu_armv8m/vmpu_armv8m_unpriv_access.c:94:10: error: assuming signed overflow does not occur when changing X +- C1 cmp C2 to X cmp C2 -+ C1 [-Werror=strict-overflow] uint32_t vmpu_unpriv_access(uint32_t addr, uint32_t size, uint32_t data)
1 parent aabaa47 commit c3b82c7

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

core/vmpu/src/mpu_armv8m/vmpu_armv8m_unpriv_access.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ extern int vmpu_fault_recovery_mpu(uint32_t pc, uint32_t sp, uint32_t fault_addr
9393

9494
uint32_t vmpu_unpriv_access(uint32_t addr, uint32_t size, uint32_t data)
9595
{
96-
int tries = 0;
96+
unsigned int tries = 0;
9797
while(1) {
9898
if ((vmpu_unpriv_test_range(addr, UVISOR_UNPRIV_ACCESS_SIZE(size)) & (TT_RESP_NSRW_Msk | TT_RESP_SRVALID_Msk)) == (TT_RESP_NSRW_Msk | TT_RESP_SRVALID_Msk)) {
9999
switch(size) {

0 commit comments

Comments
 (0)