diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/mips/mm/fault.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/arch/mips/mm/fault.c b/arch/mips/mm/fault.c index 5d9ecbc4d..ed3d2a2ac 100644 --- a/arch/mips/mm/fault.c +++ b/arch/mips/mm/fault.c @@ -220,6 +220,14 @@ vmalloc_fault: if (!pgd_present(*pgd_k)) goto bad_area_nosemaphore; set_pgd(pgd, *pgd_k); + return; } + + pmd = pmd_offset(pgd, address); + pmd_k = pmd_offset(pgd_k, address); + + if (pmd_present(*pmd) || !pmd_present(*pmd_k)) + goto bad_area_nosemaphore; + set_pmd(pmd, *pmd_k); } } |