Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 17 Aug 2018 18:48:04 +0000 (11:48 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 17 Aug 2018 18:48:04 +0000 (11:48 -0700)
Pull arm64 fixes from Will Deacon:
 "A couple of arm64 fixes

   - Fix boot on Hikey-960 by avoiding an IPI with interrupts disabled

   - Fix address truncation in pfn_valid() implementation"

* tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
  arm64: mm: check for upper PAGE_SHIFT bits in pfn_valid()
  arm64: Avoid calling stop_machine() when patching jump labels

arch/arm64/kernel/jump_label.c
arch/arm64/mm/init.c

index c2dd1ad..e075641 100644 (file)
@@ -36,7 +36,7 @@ void arch_jump_label_transform(struct jump_entry *entry,
                insn = aarch64_insn_gen_nop();
        }
 
-       aarch64_insn_patch_text(&addr, &insn, 1);
+       aarch64_insn_patch_text_nosync(addr, insn);
 }
 
 void arch_jump_label_transform_static(struct jump_entry *entry,
index 9abf8a1..787e279 100644 (file)
@@ -287,7 +287,11 @@ static void __init zone_sizes_init(unsigned long min, unsigned long max)
 #ifdef CONFIG_HAVE_ARCH_PFN_VALID
 int pfn_valid(unsigned long pfn)
 {
-       return memblock_is_map_memory(pfn << PAGE_SHIFT);
+       phys_addr_t addr = pfn << PAGE_SHIFT;
+
+       if ((addr >> PAGE_SHIFT) != pfn)
+               return 0;
+       return memblock_is_map_memory(addr);
 }
 EXPORT_SYMBOL(pfn_valid);
 #endif