} while (zswap_total_pages() > thr);
 }
 
-static int zswap_is_page_same_filled(void *ptr, unsigned long *value)
+/*********************************
+* same-filled functions
+**********************************/
+static bool zswap_is_folio_same_filled(struct folio *folio, unsigned long *value)
 {
        unsigned long *page;
        unsigned long val;
        unsigned int pos, last_pos = PAGE_SIZE / sizeof(*page) - 1;
+       bool ret = false;
 
-       page = (unsigned long *)ptr;
+       if (!zswap_same_filled_pages_enabled)
+               return false;
+
+       page = kmap_local_folio(folio, 0);
        val = page[0];
 
        if (val != page[last_pos])
-               return 0;
+               goto out;
 
        for (pos = 1; pos < last_pos; pos++) {
                if (val != page[pos])
-                       return 0;
+                       goto out;
        }
 
        *value = val;
-
-       return 1;
+       ret = true;
+out:
+       kunmap_local(page);
+       return ret;
 }
 
 static void zswap_fill_page(void *ptr, unsigned long value)
        memset_l(page, value, PAGE_SIZE / sizeof(unsigned long));
 }
 
+/*********************************
+* main API
+**********************************/
 bool zswap_store(struct folio *folio)
 {
        swp_entry_t swp = folio->swap;
        struct zswap_entry *entry, *old;
        struct obj_cgroup *objcg = NULL;
        struct mem_cgroup *memcg = NULL;
+       unsigned long value;
 
        VM_WARN_ON_ONCE(!folio_test_locked(folio));
        VM_WARN_ON_ONCE(!folio_test_swapcache(folio));
                goto reject;
        }
 
-       if (zswap_same_filled_pages_enabled) {
-               unsigned long value;
-               u8 *src;
-
-               src = kmap_local_folio(folio, 0);
-               if (zswap_is_page_same_filled(src, &value)) {
-                       kunmap_local(src);
-                       entry->length = 0;
-                       entry->value = value;
-                       atomic_inc(&zswap_same_filled_pages);
-                       goto insert_entry;
-               }
-               kunmap_local(src);
+       if (zswap_is_folio_same_filled(folio, &value)) {
+               entry->length = 0;
+               entry->value = value;
+               atomic_inc(&zswap_same_filled_pages);
+               goto store_entry;
        }
 
        if (!zswap_non_same_filled_pages_enabled)
        if (!zswap_compress(folio, entry))
                goto put_pool;
 
-insert_entry:
+store_entry:
        entry->swpentry = swp;
        entry->objcg = objcg;