summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Lamparter <chunkeey@gmail.com>2019-10-31 17:14:38 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2019-12-13 08:52:46 +0100
commit0d51b4d823a9c89d49c52b61e28d3365bbd50c0b (patch)
tree671a42767b1edb3bfe20ec2382399470f18ecf00
parent5cbc7ff56097659c5e41e884cff34731ea03e23a (diff)
downloadlinux-stable-0d51b4d823a9c89d49c52b61e28d3365bbd50c0b.tar.gz
linux-stable-0d51b4d823a9c89d49c52b61e28d3365bbd50c0b.tar.bz2
linux-stable-0d51b4d823a9c89d49c52b61e28d3365bbd50c0b.zip
crypto: crypto4xx - fix double-free in crypto4xx_destroy_sdr
commit 746c908c4d72e49068ab216c3926d2720d71a90d upstream. This patch fixes a crash that can happen during probe when the available dma memory is not enough (this can happen if the crypto4xx is built as a module). The descriptor window mapping would end up being free'd twice, once in crypto4xx_build_pdr() and the second time in crypto4xx_destroy_sdr(). Fixes: 5d59ad6eea82 ("crypto: crypto4xx - fix crypto4xx_build_pdr, crypto4xx_build_sdr leak") Cc: <stable@vger.kernel.org> Signed-off-by: Christian Lamparter <chunkeey@gmail.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/crypto/amcc/crypto4xx_core.c6
1 files changed, 1 insertions, 5 deletions
diff --git a/drivers/crypto/amcc/crypto4xx_core.c b/drivers/crypto/amcc/crypto4xx_core.c
index 6386e1784fe4..68d5ea818b6c 100644
--- a/drivers/crypto/amcc/crypto4xx_core.c
+++ b/drivers/crypto/amcc/crypto4xx_core.c
@@ -373,12 +373,8 @@ static u32 crypto4xx_build_sdr(struct crypto4xx_device *dev)
dma_alloc_coherent(dev->core_dev->device,
PPC4XX_SD_BUFFER_SIZE * PPC4XX_NUM_SD,
&dev->scatter_buffer_pa, GFP_ATOMIC);
- if (!dev->scatter_buffer_va) {
- dma_free_coherent(dev->core_dev->device,
- sizeof(struct ce_sd) * PPC4XX_NUM_SD,
- dev->sdr, dev->sdr_pa);
+ if (!dev->scatter_buffer_va)
return -ENOMEM;
- }
for (i = 0; i < PPC4XX_NUM_SD; i++) {
dev->sdr[i].ptr = dev->scatter_buffer_pa +