mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	mm, thp: print useful information when mmap_sem is unlocked in zap_pmd_range
Andrea asked for addr, end, vma->vm_start, and vma->vm_end to be emitted when !rwsem_is_locked(&tlb->mm->mmap_sem). Otherwise, debugging the underlying issue is more difficult. Suggested-by: Andrea Arcangeli <aarcange@redhat.com> Signed-off-by: David Rientjes <rientjes@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
		
							parent
							
								
									436814e61f
								
							
						
					
					
						commit
						e0897d75f0
					
				
					 1 changed files with 9 additions and 1 deletions
				
			
		
							
								
								
									
										10
									
								
								mm/memory.c
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								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;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue