![]() [ Upstream commit 57e2428f8df8263275344566e02c277648a4b7f1 ]
PUSH_REGS with save_ret=1 is used by interrupt entry helper functions that
initially start with a UNWIND_HINT_FUNC ORC state.
However, save_ret=1 means that we clobber the helper function's return
address (and then later restore the return address further down on the
stack); after that point, the only thing on the stack we can unwind through
is the IRET frame, so use UNWIND_HINT_IRET_REGS until we have a full
pt_regs frame.
( An alternate approach would be to move the pt_regs->di overwrite down
such that it is the final step of pt_regs setup; but I don't want to
rearrange entry code just to make unwinding a tiny bit more elegant. )
Fixes:
|
||
---|---|---|
.. | ||
syscalls | ||
vdso | ||
vsyscall | ||
calling.h | ||
common.c | ||
entry_32.S | ||
entry_64_compat.S | ||
entry_64.S | ||
entry.S | ||
Makefile | ||
syscall_32.c | ||
syscall_64.c | ||
syscall_x32.c | ||
thunk_32.S | ||
thunk_64.S |