CTSRD-CHERI/cheribsd

c18n: Data corruption when trampolines are interrupted

Closed this issue · 3 comments

When a trampoline is interrupted in the middle of constructing a new trusted frame, a half-constructed invalid frame would be left on the trusted stack, which may confuse unwinders.

There are other places in the trampoline where the code assumes that it cannot be interrupted. For example, in the benchmark ABI, the stack pointer is briefly set to zero before calling the stack resolver.

Work-in-progress at: #2079

Resolved in #2090

Fixed in #2090.