glibc/sysdeps
H.J. Lu 35694d3416 x86-64/cet: Check the restore token in longjmp
setcontext and swapcontext put a restore token on the old shadow stack
which is used to restore the target shadow stack when switching user
contexts.  When longjmp from a user context, the target shadow stack
can be different from the current shadow stack and INCSSP can't be
used to restore the shadow stack pointer to the target shadow stack.

Update longjmp to search for a restore token.  If found, use the token
to restore the shadow stack pointer before using INCSSP to pop the
shadow stack.  Stop the token search and use INCSSP if the shadow stack
entry value is the same as the current shadow stack pointer.

It is a user error if there is a shadow stack switch without leaving a
restore token on the old shadow stack.

The only difference between __longjmp.S and __longjmp_chk.S is that
__longjmp_chk.S has a check for invalid longjmp usages.  Merge
__longjmp.S and __longjmp_chk.S by adding the CHECK_INVALID_LONGJMP
macro.
Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
2024-01-04 13:38:26 -08:00
..
aarch64 aarch64: Add longjmp test for SME 2024-01-02 16:54:21 +00:00
alpha Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
arc Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
arm Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
csky Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
generic Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
gnu Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
hppa Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
htl Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
hurd Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
i386 i386: Ignore --enable-cet 2024-01-04 06:08:55 -08:00
ia64 Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
ieee754 Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
loongarch Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
m68k Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
mach mach: Drop SNARF_ARGS macro 2024-01-03 21:59:55 +01:00
microblaze Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
mips Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
nios2 Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
nptl Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
or1k Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
posix Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
powerpc Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
pthread Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
riscv Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
s390 Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
sh Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
sparc Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
unix x86-64/cet: Check the restore token in longjmp 2024-01-04 13:38:26 -08:00
wordsize-32 Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
wordsize-64 Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
x86 x86-64/cet: Check the restore token in longjmp 2024-01-04 13:38:26 -08:00
x86_64 x86-64/cet: Check the restore token in longjmp 2024-01-04 13:38:26 -08:00