diff options
Diffstat (limited to 'mm/rmap.c')
-rw-r--r-- | mm/rmap.c | 14 |
1 files changed, 4 insertions, 10 deletions
@@ -443,8 +443,6 @@ int page_referenced(struct page *page, int is_locked, int ignore_token) | |||
443 | void page_add_anon_rmap(struct page *page, | 443 | void page_add_anon_rmap(struct page *page, |
444 | struct vm_area_struct *vma, unsigned long address) | 444 | struct vm_area_struct *vma, unsigned long address) |
445 | { | 445 | { |
446 | BUG_ON(PageReserved(page)); | ||
447 | |||
448 | if (atomic_inc_and_test(&page->_mapcount)) { | 446 | if (atomic_inc_and_test(&page->_mapcount)) { |
449 | struct anon_vma *anon_vma = vma->anon_vma; | 447 | struct anon_vma *anon_vma = vma->anon_vma; |
450 | 448 | ||
@@ -468,8 +466,7 @@ void page_add_anon_rmap(struct page *page, | |||
468 | void page_add_file_rmap(struct page *page) | 466 | void page_add_file_rmap(struct page *page) |
469 | { | 467 | { |
470 | BUG_ON(PageAnon(page)); | 468 | BUG_ON(PageAnon(page)); |
471 | if (!pfn_valid(page_to_pfn(page)) || PageReserved(page)) | 469 | BUG_ON(!pfn_valid(page_to_pfn(page))); |
472 | return; | ||
473 | 470 | ||
474 | if (atomic_inc_and_test(&page->_mapcount)) | 471 | if (atomic_inc_and_test(&page->_mapcount)) |
475 | inc_page_state(nr_mapped); | 472 | inc_page_state(nr_mapped); |
@@ -483,8 +480,6 @@ void page_add_file_rmap(struct page *page) | |||
483 | */ | 480 | */ |
484 | void page_remove_rmap(struct page *page) | 481 | void page_remove_rmap(struct page *page) |
485 | { | 482 | { |
486 | BUG_ON(PageReserved(page)); | ||
487 | |||
488 | if (atomic_add_negative(-1, &page->_mapcount)) { | 483 | if (atomic_add_negative(-1, &page->_mapcount)) { |
489 | BUG_ON(page_mapcount(page) < 0); | 484 | BUG_ON(page_mapcount(page) < 0); |
490 | /* | 485 | /* |
@@ -640,13 +635,13 @@ static void try_to_unmap_cluster(unsigned long cursor, | |||
640 | continue; | 635 | continue; |
641 | 636 | ||
642 | pfn = pte_pfn(*pte); | 637 | pfn = pte_pfn(*pte); |
643 | if (!pfn_valid(pfn)) | 638 | if (unlikely(!pfn_valid(pfn))) { |
639 | print_bad_pte(vma, *pte, address); | ||
644 | continue; | 640 | continue; |
641 | } | ||
645 | 642 | ||
646 | page = pfn_to_page(pfn); | 643 | page = pfn_to_page(pfn); |
647 | BUG_ON(PageAnon(page)); | 644 | BUG_ON(PageAnon(page)); |
648 | if (PageReserved(page)) | ||
649 | continue; | ||
650 | 645 | ||
651 | if (ptep_clear_flush_young(vma, address, pte)) | 646 | if (ptep_clear_flush_young(vma, address, pte)) |
652 | continue; | 647 | continue; |
@@ -808,7 +803,6 @@ int try_to_unmap(struct page *page) | |||
808 | { | 803 | { |
809 | int ret; | 804 | int ret; |
810 | 805 | ||
811 | BUG_ON(PageReserved(page)); | ||
812 | BUG_ON(!PageLocked(page)); | 806 | BUG_ON(!PageLocked(page)); |
813 | 807 | ||
814 | if (PageAnon(page)) | 808 | if (PageAnon(page)) |