summaryrefslogtreecommitdiff
path: root/crypto
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2025-03-09 10:43:19 +0800
committerHerbert Xu <herbert@gondor.apana.org.au>2025-03-15 16:21:23 +0800
commitcff12830e2cb2044067167f95a537074240347b7 (patch)
tree9e9dfcc7738f1f4bbf58f8c64aa5f59dc4061cd3 /crypto
parent3d72ad46a23ae42450d1f475bb472151dede5b93 (diff)
crypto: scomp - Disable BH when taking per-cpu spin lock
Disable BH when taking per-cpu spin locks. This isn't an issue right now because the only user zswap calls scomp from process context. However, if scomp is called from softirq context the spin lock may dead-lock. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'crypto')
-rw-r--r--crypto/scompress.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/crypto/scompress.c b/crypto/scompress.c
index 9b6d9bbbc73a..a2ce481a10bb 100644
--- a/crypto/scompress.c
+++ b/crypto/scompress.c
@@ -182,7 +182,7 @@ static int scomp_acomp_comp_decomp(struct acomp_req *req, int dir)
dlen = req->dlen;
scratch = raw_cpu_ptr(&scomp_scratch);
- spin_lock(&scratch->lock);
+ spin_lock_bh(&scratch->lock);
if (sg_nents(req->src) == 1 && !PageHighMem(sg_page(req->src))) {
src = page_to_virt(sg_page(req->src)) + req->src->offset;
@@ -230,7 +230,7 @@ static int scomp_acomp_comp_decomp(struct acomp_req *req, int dir)
}
}
out:
- spin_unlock(&scratch->lock);
+ spin_unlock_bh(&scratch->lock);
return ret;
}