diff options
author | Ard Biesheuvel <ard.biesheuvel@linaro.org> | 2017-07-21 17:42:37 +0200 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2017-08-03 07:52:44 +0200 |
commit | cc4d110ec824d3f05f95b1f705158afc6fb08773 (patch) | |
tree | 8c09c9f195f61aca2f240efc71dd229cf50e38ed | |
parent | crypto: scompress - don't sleep with preemption disabled (diff) | |
download | linux-cc4d110ec824d3f05f95b1f705158afc6fb08773.tar.xz linux-cc4d110ec824d3f05f95b1f705158afc6fb08773.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 0b40d991d65f..2c07648305ad 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; } |