}
 EXPORT_SYMBOL(__frontswap_init);
 
+static inline void __frontswap_clear(struct swap_info_struct *sis, pgoff_t offset)
+{
+       frontswap_clear(sis, offset);
+       atomic_dec(&sis->frontswap_pages);
+}
+
 /*
  * "Store" data from a page to frontswap and associate it with the page's
  * swaptype and offset.  Page must be locked and in the swap cache.
                  the (older) page from frontswap
                 */
                inc_frontswap_failed_stores();
-               if (dup) {
-                       frontswap_clear(sis, offset);
-                       atomic_dec(&sis->frontswap_pages);
-               }
+               if (dup)
+                       __frontswap_clear(sis, offset);
        }
        if (frontswap_writethrough_enabled)
                /* report failure so swap also writes to swap device */
        BUG_ON(sis == NULL);
        if (frontswap_test(sis, offset)) {
                frontswap_ops.invalidate_page(type, offset);
-               atomic_dec(&sis->frontswap_pages);
-               frontswap_clear(sis, offset);
+               __frontswap_clear(sis, offset);
                inc_frontswap_invalidates();
        }
 }