diff options
| -rw-r--r-- | mm/rmap.c | 7 |
1 files changed, 7 insertions, 0 deletions
| @@ -514,6 +514,13 @@ void page_add_file_rmap(struct page *page) | |||
| 514 | void page_remove_rmap(struct page *page) | 514 | void page_remove_rmap(struct page *page) |
| 515 | { | 515 | { |
| 516 | if (atomic_add_negative(-1, &page->_mapcount)) { | 516 | if (atomic_add_negative(-1, &page->_mapcount)) { |
| 517 | if (page_mapcount(page) < 0) { | ||
| 518 | printk (KERN_EMERG "Eeek! page_mapcount(page) went negative! (%d)\n", page_mapcount(page)); | ||
| 519 | printk (KERN_EMERG " page->flags = %lx\n", page->flags); | ||
| 520 | printk (KERN_EMERG " page->count = %x\n", page_count(page)); | ||
| 521 | printk (KERN_EMERG " page->mapping = %p\n", page->mapping); | ||
| 522 | } | ||
| 523 | |||
| 517 | BUG_ON(page_mapcount(page) < 0); | 524 | BUG_ON(page_mapcount(page) < 0); |
| 518 | /* | 525 | /* |
| 519 | * It would be tidy to reset the PageAnon mapping here, | 526 | * It would be tidy to reset the PageAnon mapping here, |
