Simplify the logic in there a bit.
int error = radix_tree_preload(gfp_mask & ~__GFP_HIGHMEM);
if (error == 0) {
- page_cache_get(page);
spin_lock_irq(&mapping->tree_lock);
error = radix_tree_insert(&mapping->page_tree, offset, page);
if (!error) {
+ page_cache_get(page);
SetPageLocked(page);
page->mapping = mapping;
page->index = offset;
mapping->nrpages++;
pagecache_acct(1);
- } else {
- page_cache_release(page);
}
spin_unlock_irq(&mapping->tree_lock);
radix_tree_preload_end();
BUG_ON(PagePrivate(page));
error = radix_tree_preload(gfp_mask);
if (!error) {
- page_cache_get(page);
spin_lock_irq(&swapper_space.tree_lock);
error = radix_tree_insert(&swapper_space.page_tree,
entry.val, page);
if (!error) {
+ page_cache_get(page);
SetPageLocked(page);
SetPageSwapCache(page);
page->private = entry.val;
total_swapcache_pages++;
pagecache_acct(1);
- } else
- page_cache_release(page);
+ }
spin_unlock_irq(&swapper_space.tree_lock);
radix_tree_preload_end();
}