diff --git a/mm/zswap.c b/mm/zswap.c index 083c693602b8209a7cfc95ca5d43cdb2a7639ff8..37d2b1cb2ecb4675ace6f1e7558af1e1c0640c68 100644 --- a/mm/zswap.c +++ b/mm/zswap.c @@ -1383,8 +1383,8 @@ bool zswap_store(struct folio *folio) shrink: pool = zswap_pool_last_get(); - if (pool) - queue_work(shrink_wq, &pool->shrink_work); + if (pool && !queue_work(shrink_wq, &pool->shrink_work)) + zswap_pool_put(pool); goto reject; }