Messages in this thread Patch in this message | | | Date | Mon, 30 Jul 2012 20:26:10 -0700 (PDT) | From | Hugh Dickins <> | Subject | [PATCH] mm: change nr_ptes BUG_ON to WARN_ON |
| |
From time to time an isolated BUG_ON(mm->nr_ptes) gets reported, indicating that not all the page tables allocated could be found and freed when exit_mmap() tore down the user address space.
There's usually nothing we can say about it, beyond that it's probably a sign of some bad memory or memory corruption; though it might still indicate a bug in vma or page table management (and did recently reveal a race in THP, fixed a few months ago).
But one overdue change we can make is from BUG_ON to WARN_ON.
It's fairly likely that the system will crash shortly afterwards in some other way (for example, the BUG_ON(page_mapped(page)) in __delete_from_page_cache(), once an inode mapped into the lost page tables gets evicted); but might tell us more before that.
Change the BUG_ON(page_mapped) to WARN_ON too? Later perhaps: I'm less eager, since that one has several times led to fixes.
Signed-off-by: Hugh Dickins <hughd@google.com> ---
mm/mmap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
--- v3.5/mm/mmap.c 2012-07-21 13:58:29.000000000 -0700 +++ linux/mm/mmap.c 2012-07-30 19:38:41.977203670 -0700 @@ -2310,7 +2310,7 @@ void exit_mmap(struct mm_struct *mm) } vm_unacct_memory(nr_accounted); - BUG_ON(mm->nr_ptes > (FIRST_USER_ADDRESS+PMD_SIZE-1)>>PMD_SHIFT); + WARN_ON(mm->nr_ptes > (FIRST_USER_ADDRESS+PMD_SIZE-1)>>PMD_SHIFT); } /* Insert vm structure into process list sorted by address
| |