diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2021-06-23 14:27:58 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2021-06-23 17:35:47 -0700 |
commit | ea26ff03227d7cacef5de6036df57734373449b4 (patch) | |
tree | 2d0fe48737fe826586c8c2e0fca3fd914e726f3f | |
parent | a775a7a3eb1e85b54af0b4ee5ff4dcf66772a1fb (diff) | |
download | glibc-ea26ff03227d7cacef5de6036df57734373449b4.zip glibc-ea26ff03227d7cacef5de6036df57734373449b4.tar.gz glibc-ea26ff03227d7cacef5de6036df57734373449b4.tar.bz2 |
x86: Copy IBT and SHSTK usable only if CET is enabled
IBT and SHSTK usable bits are copied from CPUID feature bits and later
cleared if kernel doesn't support CET. Copy IBT and SHSTK usable only
if CET is enabled so that they aren't set on CET capable processors
with non-CET enabled glibc.
-rw-r--r-- | sysdeps/x86/cpu-features.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/sysdeps/x86/cpu-features.c b/sysdeps/x86/cpu-features.c index 81275db..a1d8d11 100644 --- a/sysdeps/x86/cpu-features.c +++ b/sysdeps/x86/cpu-features.c @@ -76,7 +76,6 @@ update_usable (struct cpu_features *cpu_features) CPU_FEATURE_SET_USABLE (cpu_features, PREFETCHWT1); CPU_FEATURE_SET_USABLE (cpu_features, OSPKE); CPU_FEATURE_SET_USABLE (cpu_features, WAITPKG); - CPU_FEATURE_SET_USABLE (cpu_features, SHSTK); CPU_FEATURE_SET_USABLE (cpu_features, GFNI); CPU_FEATURE_SET_USABLE (cpu_features, RDPID); CPU_FEATURE_SET_USABLE (cpu_features, RDRAND); @@ -86,7 +85,6 @@ update_usable (struct cpu_features *cpu_features) CPU_FEATURE_SET_USABLE (cpu_features, FSRM); CPU_FEATURE_SET_USABLE (cpu_features, SERIALIZE); CPU_FEATURE_SET_USABLE (cpu_features, TSXLDTRK); - CPU_FEATURE_SET_USABLE (cpu_features, IBT); CPU_FEATURE_SET_USABLE (cpu_features, LAHF64_SAHF64); CPU_FEATURE_SET_USABLE (cpu_features, LZCNT); CPU_FEATURE_SET_USABLE (cpu_features, SSE4A); @@ -99,6 +97,11 @@ update_usable (struct cpu_features *cpu_features) CPU_FEATURE_SET_USABLE (cpu_features, FSRCS); CPU_FEATURE_SET_USABLE (cpu_features, PTWRITE); +#if CET_ENABLED + CPU_FEATURE_SET_USABLE (cpu_features, IBT); + CPU_FEATURE_SET_USABLE (cpu_features, SHSTK); +#endif + /* Can we call xgetbv? */ if (CPU_FEATURES_CPU_P (cpu_features, OSXSAVE)) { |