diff options
author | Ard Biesheuvel <ard.biesheuvel@linaro.org> | 2017-07-21 16:42:37 +0100 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2017-08-03 13:52:44 +0800 |
commit | 4757f1715ee63e749594ef98c0631125f3607671 (patch) | |
tree | 71067aada412f91e3077acd8902aa37a4796c78c | |
parent | 3014649037efac090a2c0d806d7f8d0a28a95cb3 (diff) | |
download | linux-crypto-4757f1715ee63e749594ef98c0631125f3607671.tar.gz linux-crypto-4757f1715ee63e749594ef98c0631125f3607671.zip |
crypto: scompress - free partially allocated scratch buffers on failure
When allocating the per-CPU scratch buffers, we allocate the source
and destination buffers separately, but bail immediately if the second
allocation fails, without freeing the first one. Fix that.
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
-rw-r--r-- | crypto/scompress.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/crypto/scompress.c b/crypto/scompress.c index 0b40d991..2c076483 100644 --- a/crypto/scompress.c +++ b/crypto/scompress.c @@ -125,8 +125,11 @@ static int crypto_scomp_alloc_all_scratches(void) if (!scomp_src_scratches) return -ENOMEM; scomp_dst_scratches = crypto_scomp_alloc_scratches(); - if (!scomp_dst_scratches) + if (!scomp_dst_scratches) { + crypto_scomp_free_scratches(scomp_src_scratches); + scomp_src_scratches = NULL; return -ENOMEM; + } } return 0; } |