glibc/sysdeps/x86
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
..
bits Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
fpu 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
include 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
sys/platform Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
__longjmp_cancel.S x86-64/cet: Check the restore token in longjmp 2024-01-04 13:38:26 -08:00
abi-note.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
atomic-machine.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
cacheinfo.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
cacheinfo.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
cet-control.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
check-cet.awk Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
configure i386: Ignore --enable-cet 2024-01-04 06:08:55 -08:00
configure.ac i386: Ignore --enable-cet 2024-01-04 06:08:55 -08:00
cpu-features-offsets.sym x86/cet: Enable shadow stack during startup 2024-01-01 05:22:48 -08:00
cpu-features.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
cpu-tunables.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
dl-cacheinfo.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
dl-cet.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
dl-diagnostics-cpu.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
dl-get-cpu-features.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
dl-hwcap2.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
dl-hwcap.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
dl-isa-level.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
dl-lookupcfg.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
dl-minsigstacksize.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
dl-new-hash.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
dl-procinfo.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
dl-procinfo.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
dl-procruntime.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
dl-prop.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
dl-tunables.list Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
elf-initfini.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
elide.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
float128-abi.h Move __isnanf128 to libc.so 2021-03-30 14:58:19 +05:30
fpu_control.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
get-cpuid-feature-leaf.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
get-isa-level.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
hp-timing.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
init-arch.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
isa-ifunc-macros.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
isa-level.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
isa-level.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
jmp_buf-ssp.sym
ldbl2mpn.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
ldsodefs.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
libc-start.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
libc-start.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
link_map.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
linkmap.h
longjmp.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
Makeconfig
Makefile x86/cet: Add -fcf-protection=none before -fcf-protection=branch 2024-01-01 15:53:52 -08:00
readelflib.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
sysdep.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tininess.h
tst-cet-legacy-1.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-cet-legacy-1a.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-cet-legacy-2.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-cet-legacy-2a.c
tst-cet-legacy-3.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-cet-legacy-4.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-cet-legacy-4a.c
tst-cet-legacy-4b.c
tst-cet-legacy-4c.c
tst-cet-legacy-5.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-cet-legacy-5a.c
tst-cet-legacy-5b.c
tst-cet-legacy-6.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-cet-legacy-6a.c
tst-cet-legacy-6b.c
tst-cet-legacy-7.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-cet-legacy-8.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-cet-legacy-9-static.c x86: Properly set usable CET feature bits [BZ #26625] 2021-01-29 03:58:11 -08:00
tst-cet-legacy-9.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-cet-legacy-10-static.c x86: Properly set usable CET feature bits [BZ #26625] 2021-01-29 03:58:11 -08:00
tst-cet-legacy-10.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-cet-legacy-10a-static.c x86/cet: Check CPU_FEATURE_ACTIVE when CET is disabled 2023-12-19 06:57:32 -08:00
tst-cet-legacy-10a.c x86/cet: Check CPU_FEATURE_ACTIVE when CET is disabled 2023-12-19 06:57:32 -08:00
tst-cet-legacy-mod-1.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-cet-legacy-mod-2.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-cet-legacy-mod-4.c
tst-cet-legacy-mod-5.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-cet-legacy-mod-5a.c
tst-cet-legacy-mod-5b.c
tst-cet-legacy-mod-5c.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-cet-legacy-mod-6.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-cet-legacy-mod-6a.c
tst-cet-legacy-mod-6b.c
tst-cet-legacy-mod-6c.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-cet-legacy-mod-6d.c
tst-cpu-features-cpuinfo-static.c x86: Add PTWRITE feature detection [BZ #27346] 2021-02-07 08:01:14 -08:00
tst-cpu-features-cpuinfo.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-cpu-features-supports-static.c x86: Add PTWRITE feature detection [BZ #27346] 2021-02-07 08:01:14 -08:00
tst-cpu-features-supports.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-get-cpu-features-static.c
tst-get-cpu-features.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-hwcap-tunables.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-ifunc-isa-1-static.c x86: Check ifunc resolver with CPU_FEATURE_USABLE [BZ #27072] 2021-01-21 10:22:26 -08:00
tst-ifunc-isa-1.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-ifunc-isa-2-static.c x86: Check ifunc resolver with CPU_FEATURE_USABLE [BZ #27072] 2021-01-21 10:22:26 -08:00
tst-ifunc-isa-2.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-ifunc-isa.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-isa-level-1.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-isa-level-mod-1-baseline.c x86: Support GNU_PROPERTY_X86_ISA_1_V[234] marker [BZ #26717] 2021-01-07 13:10:13 -08:00
tst-isa-level-mod-1-v2.c x86: Support GNU_PROPERTY_X86_ISA_1_V[234] marker [BZ #26717] 2021-01-07 13:10:13 -08:00
tst-isa-level-mod-1-v3.c x86: Support GNU_PROPERTY_X86_ISA_1_V[234] marker [BZ #26717] 2021-01-07 13:10:13 -08:00
tst-isa-level-mod-1-v4.c x86: Support GNU_PROPERTY_X86_ISA_1_V[234] marker [BZ #26717] 2021-01-07 13:10:13 -08:00
tst-isa-level-mod-1.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-ldbl-nonnormal-printf.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-memchr-rtm.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-memcmp-rtm.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-memmove-rtm.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-memrchr-rtm.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-memset-rtm.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-setjmp-cet.c x86: Set header.feature_1 in TCB for always-on CET [BZ #27177] 2021-01-13 05:03:34 -08:00
tst-shstk-legacy-1-extra.S Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-shstk-legacy-1a-static.c x86/cet: Check legacy shadow stack applications 2023-12-19 06:57:27 -08:00
tst-shstk-legacy-1a.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-shstk-legacy-1b-static.c x86/cet: Check legacy shadow stack applications 2023-12-19 06:57:27 -08:00
tst-shstk-legacy-1b.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-shstk-legacy-1c-static.c x86/cet: Add tests for GLIBC_TUNABLES=glibc.cpu.hwcaps=-SHSTK 2023-12-19 06:57:39 -08:00
tst-shstk-legacy-1c.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-shstk-legacy-1d-static.c x86/cet: Check legacy shadow stack code in .init_array section 2023-12-19 06:57:47 -08:00
tst-shstk-legacy-1d.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-shstk-legacy-1e-static.c x86/cet: Check legacy shadow stack code in .init_array section 2023-12-19 06:57:47 -08:00
tst-shstk-legacy-1e-static.sh Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-shstk-legacy-1e.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-shstk-legacy-1e.sh Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-shstk-legacy-1f.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-shstk-legacy-1g.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-shstk-legacy-1g.sh Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-shstk-legacy-mod-1.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-stack-align.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-strcasecmp-rtm.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-strchr-rtm.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-strcmp-rtm.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-strcpy-rtm.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-string-rtm.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-strlen-rtm.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-strncasecmp-rtm.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-strncmp-rtm.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-strrchr-rtm.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-sysconf-cache-linesize-static.c x86: Handle _SC_LEVEL1_ICACHE_LINESIZE [BZ #27444] 2021-03-15 05:43:26 -07:00
tst-sysconf-cache-linesize.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-wcscmp-rtm.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-wcsncmp-rtm.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
Versions <sys/platform/x86.h>: Remove the C preprocessor magic 2021-01-21 05:58:17 -08:00