From 7e07736deb955b6fe1390e3c67751da77796b660 Mon Sep 17 00:00:00 2001 From: Kairui Song Date: Tue, 20 Aug 2024 16:19:45 +0800 Subject: [PATCH] mm: swap: sanitize zswap invalidating From: Kairui Song ZSWAP doesn't support mTHP/THP yet, so we are only invalidating order 0 entries. But thing will change soon, so call the invalidation for every slot that are freed. Signed-off-by: Kairui Song Signed-off-by: Kairui Song --- mm/swap_slots.c | 3 --- mm/swapfile.c | 4 +--- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/mm/swap_slots.c b/mm/swap_slots.c index 13ab3b771409..d7bb3caa9d4e 100644 --- a/mm/swap_slots.c +++ b/mm/swap_slots.c @@ -273,9 +273,6 @@ void free_swap_slot(swp_entry_t entry) { struct swap_slots_cache *cache; - /* Large folio swap slot is not covered. */ - zswap_invalidate(entry); - cache = raw_cpu_ptr(&swp_slots); if (likely(use_swap_slot_cache && cache->slots_ret)) { spin_lock_irq(&cache->free_lock); diff --git a/mm/swapfile.c b/mm/swapfile.c index f947f4dd31a9..31ca8b15a8da 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -242,9 +242,6 @@ static int __try_to_reclaim_swap(struct swap_info_struct *si, folio_set_dirty(folio); spin_lock(&si->lock); - /* Only sinple page folio can be backed by zswap */ - if (nr_pages == 1) - zswap_invalidate(entry); swap_entry_range_free(si, entry, nr_pages); spin_unlock(&si->lock); ret = nr_pages; @@ -956,6 +953,7 @@ static void swap_range_free(struct swap_info_struct *si, unsigned long offset, else swap_slot_free_notify = NULL; while (offset <= end) { + zswap_invalidate(swp_entry(si->type, offset)); arch_swap_invalidate_page(si->type, offset); if (swap_slot_free_notify) swap_slot_free_notify(si->bdev, offset); -- 2.45.2