#define RECOMPRESS_IDLE                (1 << 0)
 #define RECOMPRESS_HUGE                (1 << 1)
 
-static int scan_slots_for_recompress(struct zram *zram, u32 mode,
+static int scan_slots_for_recompress(struct zram *zram, u32 mode, u32 prio_max,
                                     struct zram_pp_ctl *ctl)
 {
        unsigned long nr_pages = zram->disksize >> PAGE_SHIFT;
                    zram_test_flag(zram, index, ZRAM_INCOMPRESSIBLE))
                        goto next;
 
+               /* Already compressed with same of higher priority */
+               if (zram_get_priority(zram, index) + 1 >= prio_max)
+                       goto next;
+
                pps->index = index;
                place_pp_slot(zram, ctl, pps);
                pps = NULL;
        zram_clear_flag(zram, index, ZRAM_IDLE);
 
        class_index_old = zs_lookup_class_index(zram->mem_pool, comp_len_old);
+
+       prio = max(prio, zram_get_priority(zram, index) + 1);
+       /*
+        * Recompression slots scan should not select slots that are
+        * already compressed with a higher priority algorithm, but
+        * just in case
+        */
+       if (prio >= prio_max)
+               return 0;
+
        /*
         * Iterate the secondary comp algorithms list (in order of priority)
         * and try to recompress the page.
                if (!zram->comps[prio])
                        continue;
 
-               /*
-                * Skip if the object is already re-compressed with a higher
-                * priority algorithm (or same algorithm).
-                */
-               if (prio <= zram_get_priority(zram, index))
-                       continue;
-
                num_recomps++;
                zstrm = zcomp_stream_get(zram->comps[prio]);
                src = kmap_local_page(page);
                goto release_init_lock;
        }
 
-       scan_slots_for_recompress(zram, mode, ctl);
+       scan_slots_for_recompress(zram, mode, prio_max, ctl);
 
        ret = len;
        while ((pps = select_pp_slot(ctl))) {