swap_range_free() calls zswap_invalidate() for every slot being freed, even when zswap has never been enabled. Guard the loop with zswap_never_enabled() to skip it. Signed-off-by: Kefeng Wang --- mm/swapfile.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mm/swapfile.c b/mm/swapfile.c index ba71905e4d46..505592051924 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -1318,8 +1318,10 @@ static void swap_range_free(struct swap_info_struct *si, unsigned long offset, void (*swap_slot_free_notify)(struct block_device *, unsigned long); unsigned int i; - for (i = 0; i < nr_entries; i++) - zswap_invalidate(si->type, offset + i); + if (!zswap_never_enabled()) { + for (i = 0; i < nr_entries; i++) + zswap_invalidate(si->type, offset + i); + } if (si->flags & SWP_BLKDEV) swap_slot_free_notify = -- 2.55.0