mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-11-01 09:13:37 +00:00
arm64 fixes for -rc5
- Disable in-kernel BTI when compiling with GCC, as it makes invalid
assumptions about the distance between functions which has led to
crashes when calling modules on a CPU with BTI support.
- Remove bogus TIF_SME flag management if memory allocation fails in the
ptrace code.
- Fix the resume path when configured for 52-bit virtual addressing.
-----BEGIN PGP SIGNATURE-----
iQFEBAABCgAuFiEEPxTL6PPUbjXGY88ct6xw3ITBYzQFAmMcmCUQHHdpbGxAa2Vy
bmVsLm9yZwAKCRC3rHDchMFjNJEPB/9hhMNrX0yAc64otI99DRBuuZjlGWm5tLVj
A5dByt0bvca6XIE/5nZpduYcSGBORL4Ss29mbYteWlaU89TlLEHaedOpDTX0xj5g
61H8UiK0YDX9w/7hbPZw7Uxdvw30LJSxszWZ4Ucst9CYTq+mMbbhgf8h7/BDmBD+
OBpkOlouW4fSw15/UlbgBu6UTAVkbWNcWxzwzOVAdqFYzQ75eMnmOEkEZ8b/YBAA
wZ+0kFmpjGkWymZKlgTxLfQ3eVdKwlrFzBliDtbFoFNuWyyDQ2e1qDQKFZvST4ul
NMVlF19K9NKGVlxl2++rafbg5BQ+Y+0RJ2Hujf72W6sPaThJUDM2
=7sa1
-----END PGP SIGNATURE-----
Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux
Pull arm64 fixes from Will Deacon:
"Three small arm64 fixes, all related to optional architecture
extensions: BTI, SME and 52-bit virtual addressing:
- Disable in-kernel BTI when compiling with GCC, as it makes invalid
assumptions about the distance between functions which has led to
crashes when calling modules on a CPU with BTI support
- Remove bogus TIF_SME flag management if memory allocation fails in
the ptrace code
- Fix the resume path when configured for 52-bit virtual addressing"
* tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
arm64: mm: fix resume for 52-bit enabled builds
arm64/ptrace: Don't clear calling process' TIF_SME on OOM
arm64/bti: Disable in kernel BTI when cross section thunks are broken
This commit is contained in:
commit
087aa69a9f
3 changed files with 5 additions and 2 deletions
|
|
@ -1887,6 +1887,8 @@ config ARM64_BTI_KERNEL
|
||||||
depends on CC_HAS_BRANCH_PROT_PAC_RET_BTI
|
depends on CC_HAS_BRANCH_PROT_PAC_RET_BTI
|
||||||
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94697
|
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94697
|
||||||
depends on !CC_IS_GCC || GCC_VERSION >= 100100
|
depends on !CC_IS_GCC || GCC_VERSION >= 100100
|
||||||
|
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106671
|
||||||
|
depends on !CC_IS_GCC
|
||||||
# https://github.com/llvm/llvm-project/commit/a88c722e687e6780dcd6a58718350dc76fcc4cc9
|
# https://github.com/llvm/llvm-project/commit/a88c722e687e6780dcd6a58718350dc76fcc4cc9
|
||||||
depends on !CC_IS_CLANG || CLANG_VERSION >= 120000
|
depends on !CC_IS_CLANG || CLANG_VERSION >= 120000
|
||||||
depends on (!FUNCTION_GRAPH_TRACER || DYNAMIC_FTRACE_WITH_REGS)
|
depends on (!FUNCTION_GRAPH_TRACER || DYNAMIC_FTRACE_WITH_REGS)
|
||||||
|
|
|
||||||
|
|
@ -1084,7 +1084,6 @@ static int za_set(struct task_struct *target,
|
||||||
if (!target->thread.sve_state) {
|
if (!target->thread.sve_state) {
|
||||||
sve_alloc(target, false);
|
sve_alloc(target, false);
|
||||||
if (!target->thread.sve_state) {
|
if (!target->thread.sve_state) {
|
||||||
clear_thread_flag(TIF_SME);
|
|
||||||
ret = -ENOMEM;
|
ret = -ENOMEM;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
@ -1094,7 +1093,6 @@ static int za_set(struct task_struct *target,
|
||||||
sme_alloc(target);
|
sme_alloc(target);
|
||||||
if (!target->thread.za_state) {
|
if (!target->thread.za_state) {
|
||||||
ret = -ENOMEM;
|
ret = -ENOMEM;
|
||||||
clear_tsk_thread_flag(target, TIF_SME);
|
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -101,6 +101,9 @@ SYM_FUNC_END(__cpu_suspend_enter)
|
||||||
SYM_CODE_START(cpu_resume)
|
SYM_CODE_START(cpu_resume)
|
||||||
bl init_kernel_el
|
bl init_kernel_el
|
||||||
bl finalise_el2
|
bl finalise_el2
|
||||||
|
#if VA_BITS > 48
|
||||||
|
ldr_l x0, vabits_actual
|
||||||
|
#endif
|
||||||
bl __cpu_setup
|
bl __cpu_setup
|
||||||
/* enable the MMU early - so we can access sleep_save_stash by va */
|
/* enable the MMU early - so we can access sleep_save_stash by va */
|
||||||
adrp x1, swapper_pg_dir
|
adrp x1, swapper_pg_dir
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue