aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/crypto/omap-aes-gcm.c
diff options
context:
space:
mode:
authorArd Biesheuvel <ardb@kernel.org>2019-11-05 16:01:02 +0200
committerHerbert Xu <herbert@gondor.apana.org.au>2019-12-11 16:36:59 +0800
commit46d57443eca46999051946c27ec95df313f3619a (patch)
treea3247bbd12d3579799a3287bff67a23687ccd38f /drivers/crypto/omap-aes-gcm.c
parentcrypto: omap-aes-ctr - set blocksize to 1 (diff)
downloadlinux-dev-46d57443eca46999051946c27ec95df313f3619a.tar.xz
linux-dev-46d57443eca46999051946c27ec95df313f3619a.zip
crypto: omap-aes-gcm - deal with memory allocation failure
The OMAP gcm(aes) driver invokes omap_crypto_align_sg() without dealing with the errors it may return, resulting in a crash if the routine fails in a __get_free_pages(GFP_ATOMIC) call. So bail and return the error rather than limping on if one occurs. Signed-off-by: Ard Biesheuvel <ardb@kernel.org> Reviewed-by: Tero Kristo <t-kristo@ti.com> Tested-by: Tero Kristo <t-kristo@ti.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'drivers/crypto/omap-aes-gcm.c')
-rw-r--r--drivers/crypto/omap-aes-gcm.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/crypto/omap-aes-gcm.c b/drivers/crypto/omap-aes-gcm.c
index dfd4d1cac421..05d2fe78b105 100644
--- a/drivers/crypto/omap-aes-gcm.c
+++ b/drivers/crypto/omap-aes-gcm.c
@@ -120,6 +120,8 @@ static int omap_aes_gcm_copy_buffers(struct omap_aes_dev *dd,
OMAP_CRYPTO_FORCE_SINGLE_ENTRY,
FLAGS_ASSOC_DATA_ST_SHIFT,
&dd->flags);
+ if (ret)
+ return ret;
}
if (cryptlen) {
@@ -132,6 +134,8 @@ static int omap_aes_gcm_copy_buffers(struct omap_aes_dev *dd,
OMAP_CRYPTO_FORCE_SINGLE_ENTRY,
FLAGS_IN_DATA_ST_SHIFT,
&dd->flags);
+ if (ret)
+ return ret;
}
dd->in_sg = dd->in_sgl;