crypto: omap-aes-gcm - deal with memory allocation failure
authorArd Biesheuvel <ardb@kernel.org>
Tue, 5 Nov 2019 14:01:02 +0000 (16:01 +0200)
committerHerbert Xu <herbert@gondor.apana.org.au>
Wed, 11 Dec 2019 08:36:59 +0000 (16:36 +0800)
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>
drivers/crypto/omap-aes-gcm.c

index dfd4d1c..05d2fe7 100644 (file)
@@ -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;