diff options
Diffstat (limited to 'mm/vmscan.c')
| -rw-r--r-- | mm/vmscan.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/mm/vmscan.c b/mm/vmscan.c index d31d7ce52c0e..9ca587c69274 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c | |||
| @@ -494,9 +494,16 @@ static int __remove_mapping(struct address_space *mapping, struct page *page) | |||
| 494 | spin_unlock_irq(&mapping->tree_lock); | 494 | spin_unlock_irq(&mapping->tree_lock); |
| 495 | swapcache_free(swap, page); | 495 | swapcache_free(swap, page); |
| 496 | } else { | 496 | } else { |
| 497 | void (*freepage)(struct page *); | ||
| 498 | |||
| 499 | freepage = mapping->a_ops->freepage; | ||
| 500 | |||
| 497 | __remove_from_page_cache(page); | 501 | __remove_from_page_cache(page); |
| 498 | spin_unlock_irq(&mapping->tree_lock); | 502 | spin_unlock_irq(&mapping->tree_lock); |
| 499 | mem_cgroup_uncharge_cache_page(page); | 503 | mem_cgroup_uncharge_cache_page(page); |
| 504 | |||
| 505 | if (freepage != NULL) | ||
| 506 | freepage(page); | ||
| 500 | } | 507 | } |
| 501 | 508 | ||
| 502 | return 1; | 509 | return 1; |
