FAILED: patch "[PATCH] crypto: talitos - reorder code in talitos_edesc_alloc()" failed to apply to 3.18-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 3.18-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From c56c2e173773097a248fd3bace91ac8f6fc5386d Mon Sep 17 00:00:00 2001
From: Christophe Leroy <[email protected]>
Date: Tue, 8 Jan 2019 06:56:46 +0000
Subject: [PATCH] crypto: talitos - reorder code in talitos_edesc_alloc()
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This patch moves the mapping of IV after the kmalloc(). This avoids having to unmap in case kmalloc() fails.
Signed-off-by Christophe Leroy <[email protected]>
Reviewed-by Horia Geantă <[email protected]>
Signed-off-by Herbert Xu <[email protected]>
drivers/crypto/talitos.c +7 -18
@@ -1361,23 +1361,18 @@ static struct talitos_edesc *talitos_edesc_alloc(struct device *dev,struct talitos_private *priv =dev_get_drvdata (dev);bool is_sec1 =has_ftr_sec1 (priv);int max_len = is_sec1 ?TALITOS1_MAX_DATA_LEN :TALITOS2_MAX_DATA_LEN ; -void *err;if (cryptlen + authsize > max_len) {dev_err (dev,"length exceeds h/w max limit\n" );return ERR_PTR (-EINVAL ); } -if (ivsize) - iv_dma =dma_map_single (dev, iv, ivsize,DMA_TO_DEVICE ); -if (!dst || dst == src) { src_len = assoclen + cryptlen + authsize; src_nents =sg_nents_for_len (src, src_len);if (src_nents <0 ) {dev_err (dev,"Invalid number of src SG.\n" ); - err =ERR_PTR (-EINVAL ); - goto error_sg; +return ERR_PTR (-EINVAL ); } src_nents = (src_nents ==1 ) ?0 : src_nents; dst_nents = dst ? src_nents :0 ;
@@ -1387,16 +1382,14 @@ static struct talitos_edesc *talitos_edesc_alloc(struct device *dev, src_nents =sg_nents_for_len (src, src_len);if (src_nents <0 ) {dev_err (dev,"Invalid number of src SG.\n" ); - err =ERR_PTR (-EINVAL ); - goto error_sg; +return ERR_PTR (-EINVAL ); } src_nents = (src_nents ==1 ) ?0 : src_nents; dst_len = assoclen + cryptlen + (encrypt ? authsize :0 ); dst_nents =sg_nents_for_len (dst, dst_len);if (dst_nents <0 ) {dev_err (dev,"Invalid number of dst SG.\n" ); - err =ERR_PTR (-EINVAL ); - goto error_sg; +return ERR_PTR (-EINVAL ); } dst_nents = (dst_nents ==1 ) ?0 : dst_nents; }
@@ -1425,10 +1418,10 @@ static struct talitos_edesc *talitos_edesc_alloc(struct device *dev, alloc_len +=sizeof (struct talitos_desc ); edesc =kmalloc (alloc_len,GFP_DMA | flags); -if (!edesc) { - err =ERR_PTR (-ENOMEM ); - goto error_sg; - } +if (!edesc) +return ERR_PTR (-ENOMEM ); +if (ivsize) + iv_dma =dma_map_single (dev, iv, ivsize,DMA_TO_DEVICE );memset (&edesc->desc,0 ,sizeof (edesc->desc)); edesc->src_nents = src_nents;
@@ -1445,10 +1438,6 @@ static struct talitos_edesc *talitos_edesc_alloc(struct device *dev, DMA_BIDIRECTIONAL); }return edesc; -error_sg: -if (iv_dma) -dma_unmap_single (dev, iv_dma, ivsize,DMA_TO_DEVICE ); -return err; } static struct talitos_edesc *aead_edesc_alloc(struct aead_request *areq, u8 *iv,