Commit 2821c393 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull arm64 fixes from Catalin Marinas:

 - Fix "rodata=on" not disabling "rodata=full" on arm64

 - Add arm64 make dependency between vmlinuz.efi and Image, leading to
   occasional build failures previously (with parallel building)

 - Add newline to the output formatting of the za-fork kselftest

* tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
  arm64: add dependency between vmlinuz.efi and Image
  kselftest/arm64: Fix output formatting for za-fork
  arm64: mm: Fix "rodata=on" when CONFIG_RODATA_FULL_DEFAULT_ENABLED=y
parents 00cff7b2 c0a85742
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -158,7 +158,7 @@ endif

all:	$(notdir $(KBUILD_IMAGE))


vmlinuz.efi: Image
Image vmlinuz.efi: vmlinux
	$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@

+15 −2
Original line number Diff line number Diff line
@@ -21,9 +21,22 @@ static inline bool arch_parse_debug_rodata(char *arg)
	extern bool rodata_enabled;
	extern bool rodata_full;

	if (arg && !strcmp(arg, "full")) {
	if (!arg)
		return false;

	if (!strcmp(arg, "full")) {
		rodata_enabled = rodata_full = true;
		return true;
	}

	if (!strcmp(arg, "off")) {
		rodata_enabled = rodata_full = false;
		return true;
	}

	if (!strcmp(arg, "on")) {
		rodata_enabled = true;
		rodata_full = true;
		rodata_full = false;
		return true;
	}

+3 −4
Original line number Diff line number Diff line
@@ -29,7 +29,7 @@ bool can_set_direct_map(void)
	 *
	 * KFENCE pool requires page-granular mapping if initialized late.
	 */
	return (rodata_enabled && rodata_full) || debug_pagealloc_enabled() ||
	return rodata_full || debug_pagealloc_enabled() ||
	       arm64_kfence_can_set_direct_map();
}

@@ -105,8 +105,7 @@ static int change_memory_common(unsigned long addr, int numpages,
	 * If we are manipulating read-only permissions, apply the same
	 * change to the linear mapping of the pages that back this VM area.
	 */
	if (rodata_enabled &&
	    rodata_full && (pgprot_val(set_mask) == PTE_RDONLY ||
	if (rodata_full && (pgprot_val(set_mask) == PTE_RDONLY ||
			    pgprot_val(clear_mask) == PTE_RDONLY)) {
		for (i = 0; i < area->nr_pages; i++) {
			__change_memory_common((u64)page_address(area->pages[i]),
+1 −1
Original line number Diff line number Diff line
@@ -85,7 +85,7 @@ int main(int argc, char **argv)
	 */
	ret = open("/proc/sys/abi/sme_default_vector_length", O_RDONLY, 0);
	if (ret >= 0) {
		ksft_test_result(fork_test(), "fork_test");
		ksft_test_result(fork_test(), "fork_test\n");

	} else {
		ksft_print_msg("SME not supported\n");