diff options
Diffstat (limited to 'mm/memory.c')
| -rw-r--r-- | mm/memory.c | 12 | 
1 files changed, 10 insertions, 2 deletions
| diff --git a/mm/memory.c b/mm/memory.c index 1b7dc662bf9f..2466d1250231 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -1225,7 +1225,15 @@ static inline unsigned long zap_pmd_range(struct mmu_gather *tlb,  		next = pmd_addr_end(addr, end);  		if (pmd_trans_huge(*pmd)) {  			if (next - addr != HPAGE_PMD_SIZE) { -				VM_BUG_ON(!rwsem_is_locked(&tlb->mm->mmap_sem)); +#ifdef CONFIG_DEBUG_VM +				if (!rwsem_is_locked(&tlb->mm->mmap_sem)) { +					pr_err("%s: mmap_sem is unlocked! addr=0x%lx end=0x%lx vma->vm_start=0x%lx vma->vm_end=0x%lx\n", +						__func__, addr, end, +						vma->vm_start, +						vma->vm_end); +					BUG(); +				} +#endif  				split_huge_page_pmd(vma->vm_mm, pmd);  			} else if (zap_huge_pmd(tlb, vma, pmd, addr))  				goto next; @@ -1366,7 +1374,7 @@ void unmap_vmas(struct mmu_gather *tlb,  /**   * zap_page_range - remove user pages in a given range   * @vma: vm_area_struct holding the applicable pages - * @address: starting address of pages to zap + * @start: starting address of pages to zap   * @size: number of bytes to zap   * @details: details of nonlinear truncation or shared cache invalidation   * | 
