summaryrefslogtreecommitdiff
path: root/mm
diff options
context:
space:
mode:
authorChengming Zhou <zhouchengming@bytedance.com>2024-02-08 02:32:54 +0000
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2024-03-01 13:35:10 +0100
commit7a3610956d3bddacca2fcc2259295d1ad56556cb (patch)
tree397f821a9b5023f39a072f7cae639afd24f15b23 /mm
parenta259173bf2659e933fcb2ac56681a91adda2777f (diff)
mm/zswap: invalidate duplicate entry when !zswap_enabled
commit 678e54d4bb9a4822f8ae99690ac131c5d490cdb1 upstream. We have to invalidate any duplicate entry even when !zswap_enabled since zswap can be disabled anytime. If the folio store success before, then got dirtied again but zswap disabled, we won't invalidate the old duplicate entry in the zswap_store(). So later lru writeback may overwrite the new data in swapfile. Link: https://lkml.kernel.org/r/20240208023254.3873823-1-chengming.zhou@linux.dev Fixes: 42c06a0e8ebe ("mm: kill frontswap") Signed-off-by: Chengming Zhou <zhouchengming@bytedance.com> Acked-by: Johannes Weiner <hannes@cmpxchg.org> Cc: Nhat Pham <nphamcs@gmail.com> Cc: Yosry Ahmed <yosryahmed@google.com> Cc: <stable@vger.kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'mm')
-rw-r--r--mm/zswap.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/mm/zswap.c b/mm/zswap.c
index 37d2b1cb2ecb..63fb94d68e10 100644
--- a/mm/zswap.c
+++ b/mm/zswap.c
@@ -1215,7 +1215,7 @@ bool zswap_store(struct folio *folio)
if (folio_test_large(folio))
return false;
- if (!zswap_enabled || !tree)
+ if (!tree)
return false;
/*
@@ -1231,6 +1231,9 @@ bool zswap_store(struct folio *folio)
}
spin_unlock(&tree->lock);
+ if (!zswap_enabled)
+ return false;
+
/*
* XXX: zswap reclaim does not work with cgroups yet. Without a
* cgroup-aware entry LRU, we will push out entries system-wide based on