aboutsummaryrefslogtreecommitdiffstats
path: root/mm
diff options
context:
space:
mode:
authorAndrew Morton <akpm@osdl.org>2004-04-26 09:02:05 -0700
committerLinus Torvalds <torvalds@ppc970.osdl.org>2004-04-26 09:02:05 -0700
commit65ea1afff7c4b1453996a7f8713dd132e5118a7c (patch)
tree57d867e642047dfa06fe9e07cb858a488a433a4b /mm
parentc8c855b5251716b6a397a3350050711bd6dab217 (diff)
downloadhistory-65ea1afff7c4b1453996a7f8713dd132e5118a7c.tar.gz
[PATCH] simplify put_page()
By requiring that compound pages implement destructors we can drop some code from put_page().
Diffstat (limited to 'mm')
-rw-r--r--mm/swap.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/mm/swap.c b/mm/swap.c
index 5d267915d945d6..75e93e20119d0f 100644
--- a/mm/swap.c
+++ b/mm/swap.c
@@ -41,11 +41,10 @@ void put_page(struct page *page)
if (unlikely(PageCompound(page))) {
page = (struct page *)page->private;
if (put_page_testzero(page)) {
- if (page[1].mapping) { /* destructor? */
- (*(void (*)(struct page *))page[1].mapping)(page);
- } else {
- __page_cache_release(page);
- }
+ void (*dtor)(struct page *page);
+
+ dtor = (void (*)(struct page *))page[1].mapping;
+ (*dtor)(page);
}
return;
}