Hi YunQiang,

Could you try the following kernel patch & let me know if it works for
you?

My theory is that this is fallout from commit 517e1fbeb65f
("mm/usercopy: Drop extra is_vmalloc_or_module() check") which went into
Linux v4.12. I guess this shows our test systems don't have hardened
usercopy enabled - I'll go change that!

Thanks,
    Paul

---
diff --git a/arch/mips/mm/mmap.c b/arch/mips/mm/mmap.c
index 2f616ebeb7e0..01b2eadd28bd 100644
--- a/arch/mips/mm/mmap.c
+++ b/arch/mips/mm/mmap.c
@@ -203,6 +203,11 @@ unsigned long arch_randomize_brk(struct mm_struct *mm)
 
 int __virt_addr_valid(const volatile void *kaddr)
 {
+       unsigned long vaddr = (unsigned long)vaddr;
+
+       if ((vaddr < PAGE_OFFSET) || (vaddr >= MAP_BASE))
+               return false;
+
        return pfn_valid(PFN_DOWN(virt_to_phys(kaddr)));
 }
 EXPORT_SYMBOL_GPL(__virt_addr_valid);

Reply via email to