Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux

Pull arm64 fixes from Will Deacon:
"Although we're still debugging a few minor arm64-specific issues in
mainline, I didn't want to hold this lot up in the meantime.

We've got an additional KASLR fix after the previous one wasn't quite
complete, a fix for a performance regression when mapping executable
pages into userspace and some fixes for kprobe blacklisting. All
candidates for stable.

Summary:

- Fix module loading when KASLR is configured but disabled at runtime

- Fix accidental IPI when mapping user executable pages

- Ensure hyp-stub and KVM world switch code cannot be kprobed"

* tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
arm64: hibernate: Clean the __hyp_text to PoC after resume
arm64: hyp-stub: Forbid kprobing of the hyp-stub
arm64: kprobe: Always blacklist the KVM world-switch code
arm64: kaslr: ensure randomized quantities are clean also when kaslr is off
arm64: Do not issue IPIs for user executable ptes

+14 -5
+3 -1
arch/arm64/kernel/hibernate.c
··· 299 299 dcache_clean_range(__idmap_text_start, __idmap_text_end); 300 300 301 301 /* Clean kvm setup code to PoC? */ 302 - if (el2_reset_needed()) 302 + if (el2_reset_needed()) { 303 303 dcache_clean_range(__hyp_idmap_text_start, __hyp_idmap_text_end); 304 + dcache_clean_range(__hyp_text_start, __hyp_text_end); 305 + } 304 306 305 307 /* make the crash dump kernel image protected again */ 306 308 crash_post_resume();
+2
arch/arm64/kernel/hyp-stub.S
··· 28 28 #include <asm/virt.h> 29 29 30 30 .text 31 + .pushsection .hyp.text, "ax" 32 + 31 33 .align 11 32 34 33 35 ENTRY(__hyp_stub_vectors)
+1
arch/arm64/kernel/kaslr.c
··· 88 88 * we end up running with module randomization disabled. 89 89 */ 90 90 module_alloc_base = (u64)_etext - MODULES_VSIZE; 91 + __flush_dcache_area(&module_alloc_base, sizeof(module_alloc_base)); 91 92 92 93 /* 93 94 * Try to map the FDT early. If this fails, we simply bail,
+3 -3
arch/arm64/kernel/probes/kprobes.c
··· 478 478 addr < (unsigned long)__entry_text_end) || 479 479 (addr >= (unsigned long)__idmap_text_start && 480 480 addr < (unsigned long)__idmap_text_end) || 481 + (addr >= (unsigned long)__hyp_text_start && 482 + addr < (unsigned long)__hyp_text_end) || 481 483 !!search_exception_tables(addr)) 482 484 return true; 483 485 484 486 if (!is_kernel_in_hyp_mode()) { 485 - if ((addr >= (unsigned long)__hyp_text_start && 486 - addr < (unsigned long)__hyp_text_end) || 487 - (addr >= (unsigned long)__hyp_idmap_text_start && 487 + if ((addr >= (unsigned long)__hyp_idmap_text_start && 488 488 addr < (unsigned long)__hyp_idmap_text_end)) 489 489 return true; 490 490 }
+5 -1
arch/arm64/mm/flush.c
··· 33 33 __clean_dcache_area_pou(kaddr, len); 34 34 __flush_icache_all(); 35 35 } else { 36 - flush_icache_range(addr, addr + len); 36 + /* 37 + * Don't issue kick_all_cpus_sync() after I-cache invalidation 38 + * for user mappings. 39 + */ 40 + __flush_icache_range(addr, addr + len); 37 41 } 38 42 } 39 43