]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
crypto: scomp - Disable BH when taking per-cpu spin lock
authorHerbert Xu <herbert@gondor.apana.org.au>
Sun, 9 Mar 2025 02:43:19 +0000 (10:43 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Sat, 15 Mar 2025 08:21:23 +0000 (16:21 +0800)
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>
crypto/scompress.c

index 9b6d9bbbc73a1070a0ca0837dbc22118c8ed8d4d..a2ce481a10bb26990fbabd081786931e4c516482 100644 (file)
@@ -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;
 }