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
Unified · Split
| @@ -1887,6 +1887,8 @@ config ARM64_BTI_KERNEL · 1886 unmodified lines | |||
| 1887 | depends on CC_HAS_BRANCH_PROT_PAC_RET_BTI | 1887 | depends on CC_HAS_BRANCH_PROT_PAC_RET_BTI |
| 1888 | # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94697 | 1888 | # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94697 |
| 1889 | depends on !CC_IS_GCC || GCC_VERSION >= 100100 | 1889 | depends on !CC_IS_GCC || GCC_VERSION >= 100100 |
| 1890 | # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106671 | ||
| 1891 | depends on !CC_IS_GCC | ||
| 1890 | # https://github.com/llvm/llvm-project/commit/a88c722e687e6780dcd6a58718350dc76fcc4cc9 | 1892 | # https://github.com/llvm/llvm-project/commit/a88c722e687e6780dcd6a58718350dc76fcc4cc9 |
| 1891 | depends on !CC_IS_CLANG || CLANG_VERSION >= 120000 | 1893 | depends on !CC_IS_CLANG || CLANG_VERSION >= 120000 |
| 1892 | depends on (!FUNCTION_GRAPH_TRACER || DYNAMIC_FTRACE_WITH_REGS) | 1894 | depends on (!FUNCTION_GRAPH_TRACER || DYNAMIC_FTRACE_WITH_REGS) |
| @@ -1084,7 +1084,6 @@ static int za_set(struct task_struct *target, · 1083 unmodified lines | |||
| 1084 | if (!target->thread.sve_state) { | 1084 | if (!target->thread.sve_state) { |
| 1085 | sve_alloc(target, false); | 1085 | sve_alloc(target, false); |
| 1086 | if (!target->thread.sve_state) { | 1086 | if (!target->thread.sve_state) { |
| 1087 | clear_thread_flag(TIF_SME); | ||
| 1088 | ret = -ENOMEM; | 1087 | ret = -ENOMEM; |
| 1089 | goto out; | 1088 | goto out; |
| 1090 | } | 1089 | } |
| @@ -1094,7 +1093,6 @@ static int za_set(struct task_struct *target, · 3 unmodified lines | |||
| 1094 | sme_alloc(target); | 1093 | sme_alloc(target); |
| 1095 | if (!target->thread.za_state) { | 1094 | if (!target->thread.za_state) { |
| 1096 | ret = -ENOMEM; | 1095 | ret = -ENOMEM; |
| 1097 | clear_tsk_thread_flag(target, TIF_SME); | ||
| 1098 | goto out; | 1096 | goto out; |
| 1099 | } | 1097 | } |
| 1100 | 1098 | ||
| @@ -101,6 +101,9 @@ SYM_FUNC_END(__cpu_suspend_enter) · 100 unmodified lines | |||
| 101 | SYM_CODE_START(cpu_resume) | 101 | SYM_CODE_START(cpu_resume) |
| 102 | bl init_kernel_el | 102 | bl init_kernel_el |
| 103 | bl finalise_el2 | 103 | bl finalise_el2 |
| 104 | #if VA_BITS > 48 | ||
| 105 | ldr_l x0, vabits_actual | ||
| 106 | #endif | ||
| 104 | bl __cpu_setup | 107 | bl __cpu_setup |
| 105 | /* enable the MMU early - so we can access sleep_save_stash by va */ | 108 | /* enable the MMU early - so we can access sleep_save_stash by va */ |
| 106 | adrp x1, swapper_pg_dir | 109 | adrp x1, swapper_pg_dir |