kernel_samsung_a53x/scripts
Andy Lutomirski e8ca71be6c x86/stackprotector/32: Make the canary into a regular percpu variable
[ Upstream commit 3fb0fdb3bbe7aed495109b3296b06c2409734023 ]

On 32-bit kernels, the stackprotector canary is quite nasty -- it is
stored at %gs:(20), which is nasty because 32-bit kernels use %fs for
percpu storage.  It's even nastier because it means that whether %gs
contains userspace state or kernel state while running kernel code
depends on whether stackprotector is enabled (this is
CONFIG_X86_32_LAZY_GS), and this setting radically changes the way
that segment selectors work.  Supporting both variants is a
maintenance and testing mess.

Merely rearranging so that percpu and the stack canary
share the same segment would be messy as the 32-bit percpu address
layout isn't currently compatible with putting a variable at a fixed
offset.

Fortunately, GCC 8.1 added options that allow the stack canary to be
accessed as %fs:__stack_chk_guard, effectively turning it into an ordinary
percpu variable.  This lets us get rid of all of the code to manage the
stack canary GDT descriptor and the CONFIG_X86_32_LAZY_GS mess.

(That name is special.  We could use any symbol we want for the
 %fs-relative mode, but for CONFIG_SMP=n, gcc refuses to let us use any
 name other than __stack_chk_guard.)

Forcibly disable stackprotector on older compilers that don't support
the new options and turn the stack canary into a percpu variable. The
"lazy GS" approach is now used for all 32-bit configurations.

Also makes load_gs_index() work on 32-bit kernels. On 64-bit kernels,
it loads the GS selector and updates the user GSBASE accordingly. (This
is unchanged.) On 32-bit kernels, it loads the GS selector and updates
GSBASE, which is now always the user base. This means that the overall
effect is the same on 32-bit and 64-bit, which avoids some ifdeffery.

 [ bp: Massage commit message. ]

Signed-off-by: Andy Lutomirski <luto@kernel.org>
Signed-off-by: Borislav Petkov <bp@suse.de>
Link: https://lkml.kernel.org/r/c0ff7dba14041c7e5d1cae5d4df052f03759bef3.1613243844.git.luto@kernel.org
Stable-dep-of: e3f269ed0acc ("x86/pm: Work around false positive kmemleak report in msr_build_context()")
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-11-19 09:22:37 +01:00
..
atomic Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
basic Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clang-tools gen_compile_commands: fix invalid escape sequence warning 2024-11-19 08:44:35 +01:00
coccinelle Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
crypto Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
dtc Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
dummy-tools Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
fmp Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gcc-plugins randstruct: Fix gcc-plugin performance mode to stay in group 2024-11-18 11:43:20 +01:00
gdb Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
genksyms Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
kconfig kconfig: fix infinite loop when expanding a macro at the end of file 2024-11-19 08:44:58 +01:00
ksymoops Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
lego Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mod modpost: trim leading spaces when processing source files list 2024-11-18 12:13:29 +01:00
package Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
selinux Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
tracing Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
adjust_autoksyms.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
as-version.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
asn1_compiler.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
bin2c.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
bloat-o-meter Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
bootgraph.pl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
bpf_helpers_doc.py bpf, scripts: Correct GPL license name 2024-11-18 22:25:41 +01:00
cc-can-link.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
check-sysctl-docs Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
check_extable.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
checkincludes.pl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
checkkconfigsymbols.py Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
checkpatch.pl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
checkstack.pl checkstack: fix printed address 2024-11-18 12:11:41 +01:00
checksyscalls.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
checkversion.pl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clang-version.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
cleanfile Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
cleanpatch Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
coccicheck Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
config Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
const_structs.checkpatch Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
decode_stacktrace.sh scripts/decode_stacktrace.sh: optionally use LLVM utilities 2024-11-18 12:13:34 +01:00
decodecode Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
depmod.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
dev-needs.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
diffconfig Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
documentation-file-ref-check Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
export_report.pl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
extract-cert.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
extract-ikconfig Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
extract-module-sig.pl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
extract-sys-certs.pl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
extract-vmlinux Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
extract_xc3028.pl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
faddr2line Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
file-size.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
find-unused-docs.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gcc-goto.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gcc-ld Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gcc-version.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gcc-x86_32-has-stack-protector.sh x86/stackprotector/32: Make the canary into a regular percpu variable 2024-11-19 09:22:37 +01:00
gcc-x86_64-has-stack-protector.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gen_autoksyms.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gen_ksymdeps.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
generate_cfi_kallsyms.pl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
generate_initcall_order.pl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
get_abi.pl scripts/get_abi: fix source path leak 2024-11-18 12:12:58 +01:00
get_dvb_firmware Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
get_maintainer.pl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gfp-translate Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
headerdep.pl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
headers_check.pl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
headers_install.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
insert-sys-cert.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
jobserver-exec Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
kallsyms.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Kbuild.include Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Kconfig.include Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
kernel-doc stddef: Introduce DECLARE_FLEX_ARRAY() helper 2024-11-18 12:12:59 +01:00
ld-version.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
leaking_addresses.pl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Lindent Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
link-vmlinux.sh kbuild: Fix changing ELF file type for output of gen_btf for big endian 2024-11-18 12:13:30 +01:00
lld-version.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile.asm-generic Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile.build Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile.clean Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile.dtbinst Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile.extrawarn kbuild: Move -Wenum-{compare-conditional,enum-conversion} into W=1 2024-11-19 09:22:34 +01:00
Makefile.gcc-plugins Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile.headersinst Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile.host Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile.kasan Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile.kcov Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile.kcsan Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile.lib Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile.modfinal Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile.modinst Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile.modpost Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile.modsign Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile.package Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile.ubsan Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile.userprogs Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
makelst Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
markup_oops.pl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mkcompile_h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mkmakefile Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mksysmap Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mkuboot.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
module.lds.S Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
modules-check.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
nsdeps Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
objdiff Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pahole-flags.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
parse-maintainers.pl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
patch-kernel Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
profile2linkerlist.pl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
prune-kernel Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
recordmcount.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
recordmcount.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
recordmcount.pl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
setlocalversion scripts: Don't append '-dirty' to Kernel name 2024-06-15 16:21:18 -03:00
show_delta Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sign-file.c sign-file: Fix incorrect return values check 2024-11-18 12:11:49 +01:00
sorttable.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sorttable.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
spdxcheck-test.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
spdxcheck.py Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
spelling.txt Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sphinx-pre-install Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
split-man.pl Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
stackdelta Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
stackusage Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
subarch.include Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
tags.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
tools-support-relr.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
unifdef.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ver_linux Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
xen-hypercalls.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
xz_wrap.sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00