From: Herbert Xu Date: Sun, 9 Mar 2025 02:43:19 +0000 (+0800) Subject: crypto: scomp - Disable BH when taking per-cpu spin lock X-Git-Tag: v6.15-rc1~118^2~54 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=cff12830e2cb2044067167f95a537074240347b7;p=thirdparty%2Fkernel%2Flinux.git 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 --- diff --git a/crypto/scompress.c b/crypto/scompress.c index 9b6d9bbbc73a1..a2ce481a10bb2 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; }