When a stack overflow is caught by an MPU region, the stack pointer will end up inside that area when the exception is handled. Handling the exception involves pushing an exception frame onto the same stack. If there's not enough space remaining below the faulting SP value, the memory region below the stack will get corrupted. We protect against this by making the stack guard larger than the 0x20 bytes necessary to hold an exception frame. To avoid lots of conditional complexity here, the guard is set to 0x40 bytes if the MPU minimum size is not larger than 0x20 bytes. Signed-off-by: Keith Packard <keithp@keithp.com> |
||
|---|---|---|
| .. | ||
| zephyr | ||