From: Markus Elfring <elfr...@users.sourceforge.net>
Date: Mon, 12 Mar 2018 14:08:55 +0100

Add jump targets so that an error message and the setting of a specific
error code is stored only once at the end of this function.

Signed-off-by: Markus Elfring <elfr...@users.sourceforge.net>
---
 drivers/crypto/talitos.c | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/drivers/crypto/talitos.c b/drivers/crypto/talitos.c
index 6882fa2f8bad..a2271322db34 100644
--- a/drivers/crypto/talitos.c
+++ b/drivers/crypto/talitos.c
@@ -1352,29 +1352,24 @@ static struct talitos_edesc *talitos_edesc_alloc(struct 
device *dev,
        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;
-               }
+               if (src_nents < 0)
+                       goto report_failure;
+
                src_nents = (src_nents == 1) ? 0 : src_nents;
                dst_nents = dst ? src_nents : 0;
                dst_len = 0;
        } else { /* dst && dst != src*/
                src_len = assoclen + cryptlen + (encrypt ? 0 : 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;
-               }
+               if (src_nents < 0)
+                       goto report_failure;
+
                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;
+                       goto set_error_code;
                }
                dst_nents = (dst_nents == 1) ? 0 : dst_nents;
        }
@@ -1424,6 +1419,11 @@ static struct talitos_edesc *talitos_edesc_alloc(struct 
device *dev,
                                                     DMA_BIDIRECTIONAL);
        }
        return edesc;
+
+report_failure:
+       dev_err(dev, "Invalid number of src SG.\n");
+set_error_code:
+       err = ERR_PTR(-EINVAL);
 error_sg:
        if (iv_dma)
                dma_unmap_single(dev, iv_dma, ivsize, DMA_TO_DEVICE);
-- 
2.16.2

Reply via email to