Commit 580b536b authored by Catalin Marinas's avatar Catalin Marinas
Browse files

Merge 'arm64/for-next/fixes' into for-next/bti

Needed for the arch/arm64/kernel/entry-ftrace.S fix.

* commit 'arm64/for-next/fixes^^':
  arm64: ftrace: add missing BTIs
  arm64: kexec: use __pa_symbol(empty_zero_page)
  arm64: update PAC description for kernel
parents d58071a8 35b6b28e
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -53,11 +53,10 @@ The number of bits that the PAC occupies in a pointer is 55 minus the
virtual address size configured by the kernel. For example, with a
virtual address size of 48, the PAC is 7 bits wide.

Recent versions of GCC can compile code with APIAKey-based return
address protection when passed the -msign-return-address option. This
uses instructions in the HINT space (unless -march=armv8.3-a or higher
is also passed), and such code can run on systems without the pointer
authentication extension.
When ARM64_PTR_AUTH_KERNEL is selected, the kernel will be compiled
with HINT space pointer authentication instructions protecting
function returns. Kernels built with this option will work on hardware
with or without pointer authentication support.

In addition to exec(), keys can also be reinitialized to random values
using the PR_PAC_RESET_KEYS prctl. A bitmask of PR_PAC_APIAKEY,
+6 −0
Original line number Diff line number Diff line
@@ -77,11 +77,17 @@
	.endm

SYM_CODE_START(ftrace_regs_caller)
#ifdef BTI_C
	BTI_C
#endif
	ftrace_regs_entry	1
	b	ftrace_common
SYM_CODE_END(ftrace_regs_caller)

SYM_CODE_START(ftrace_caller)
#ifdef BTI_C
	BTI_C
#endif
	ftrace_regs_entry	0
	b	ftrace_common
SYM_CODE_END(ftrace_caller)
+1 −1
Original line number Diff line number Diff line
@@ -147,7 +147,7 @@ int machine_kexec_post_load(struct kimage *kimage)
	if (rc)
		return rc;
	kimage->arch.ttbr1 = __pa(trans_pgd);
	kimage->arch.zero_page = __pa(empty_zero_page);
	kimage->arch.zero_page = __pa_symbol(empty_zero_page);

	reloc_size = __relocate_new_kernel_end - __relocate_new_kernel_start;
	memcpy(reloc_code, __relocate_new_kernel_start, reloc_size);