crypto: scompress - Fix scratch allocation failure handling
authorHerbert Xu <herbert@gondor.apana.org.au>
Sat, 15 Mar 2025 12:37:36 +0000 (20:37 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 21 Mar 2025 09:39:05 +0000 (17:39 +0800)
If the scratch allocation fails, all subsequent allocations will
silently succeed without actually allocating anything.  Fix this
by only incrementing users when the allocation succeeds.

Fixes: 6a8487a1f29f ("crypto: scompress - defer allocation of scratch buffer to first use")
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Acked-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
crypto/scompress.c

index f85cc0d83164c54978e9c914b268be9697439f0c..5e0238af542581372e37ca6959441abb3d0bd9a4 100644 (file)
@@ -159,8 +159,12 @@ static int crypto_scomp_init_tfm(struct crypto_tfm *tfm)
                if (ret)
                        goto unlock;
        }
-       if (!scomp_scratch_users++)
+       if (!scomp_scratch_users) {
                ret = crypto_scomp_alloc_scratches();
+               if (ret)
+                       goto unlock;
+               scomp_scratch_users++;
+       }
 unlock:
        mutex_unlock(&scomp_lock);