mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 03:01:39 -04:00
mm: dump page when hitting a VM_BUG_ON using VM_BUG_ON_PAGE
Most of the VM_BUG_ON assertions are performed on a page. Usually, when one of these assertions fails we'll get a BUG_ON with a call stack and the registers. I've recently noticed based on the requests to add a small piece of code that dumps the page to various VM_BUG_ON sites that the page dump is quite useful to people debugging issues in mm. This patch adds a VM_BUG_ON_PAGE(cond, page) which beyond doing what VM_BUG_ON() does, also dumps the page before executing the actual BUG_ON. [[email protected]: fix up includes] Signed-off-by: Sasha Levin <[email protected]> Cc: "Kirill A. Shutemov" <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
parent
e3bba3c3c9
commit
309381feae
30 changed files with 181 additions and 170 deletions
12
mm/ksm.c
12
mm/ksm.c
|
|
@ -1898,13 +1898,13 @@ int rmap_walk_ksm(struct page *page, struct rmap_walk_control *rwc)
|
|||
int ret = SWAP_AGAIN;
|
||||
int search_new_forks = 0;
|
||||
|
||||
VM_BUG_ON(!PageKsm(page));
|
||||
VM_BUG_ON_PAGE(!PageKsm(page), page);
|
||||
|
||||
/*
|
||||
* Rely on the page lock to protect against concurrent modifications
|
||||
* to that page's node of the stable tree.
|
||||
*/
|
||||
VM_BUG_ON(!PageLocked(page));
|
||||
VM_BUG_ON_PAGE(!PageLocked(page), page);
|
||||
|
||||
stable_node = page_stable_node(page);
|
||||
if (!stable_node)
|
||||
|
|
@ -1958,13 +1958,13 @@ void ksm_migrate_page(struct page *newpage, struct page *oldpage)
|
|||
{
|
||||
struct stable_node *stable_node;
|
||||
|
||||
VM_BUG_ON(!PageLocked(oldpage));
|
||||
VM_BUG_ON(!PageLocked(newpage));
|
||||
VM_BUG_ON(newpage->mapping != oldpage->mapping);
|
||||
VM_BUG_ON_PAGE(!PageLocked(oldpage), oldpage);
|
||||
VM_BUG_ON_PAGE(!PageLocked(newpage), newpage);
|
||||
VM_BUG_ON_PAGE(newpage->mapping != oldpage->mapping, newpage);
|
||||
|
||||
stable_node = page_stable_node(newpage);
|
||||
if (stable_node) {
|
||||
VM_BUG_ON(stable_node->kpfn != page_to_pfn(oldpage));
|
||||
VM_BUG_ON_PAGE(stable_node->kpfn != page_to_pfn(oldpage), oldpage);
|
||||
stable_node->kpfn = page_to_pfn(newpage);
|
||||
/*
|
||||
* newpage->mapping was set in advance; now we need smp_wmb()
|
||||
|
|
|
|||
Loading…
Reference in a new issue