aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Elfring <elfring@users.sourceforge.net>2016-09-15 10:00:55 -0400
committerHerbert Xu <herbert@gondor.apana.org.au>2016-09-22 06:27:46 -0400
commit06435f3437599d01653d42670c604d0b28a878e1 (patch)
treed3f05146fe63d8405a957db625a425950e6ad420
parent9e6df0fdfc4b3067de03f7be02f274e0a81737e7 (diff)
crypto: caam - Move common error handling code in two functions
Move statements for error handling which were identical in two if branches to the end of these functions. Signed-off-by: Markus Elfring <elfring@users.sourceforge.net> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
-rw-r--r--drivers/crypto/caam/caamhash.c26
1 files changed, 14 insertions, 12 deletions
diff --git a/drivers/crypto/caam/caamhash.c b/drivers/crypto/caam/caamhash.c
index adb8b19ee942..660dc206969f 100644
--- a/drivers/crypto/caam/caamhash.c
+++ b/drivers/crypto/caam/caamhash.c
@@ -1231,9 +1231,7 @@ static int ahash_final_no_ctx(struct ahash_request *req)
1231 state->buf_dma = dma_map_single(jrdev, buf, buflen, DMA_TO_DEVICE); 1231 state->buf_dma = dma_map_single(jrdev, buf, buflen, DMA_TO_DEVICE);
1232 if (dma_mapping_error(jrdev, state->buf_dma)) { 1232 if (dma_mapping_error(jrdev, state->buf_dma)) {
1233 dev_err(jrdev, "unable to map src\n"); 1233 dev_err(jrdev, "unable to map src\n");
1234 ahash_unmap(jrdev, edesc, req, digestsize); 1234 goto unmap;
1235 kfree(edesc);
1236 return -ENOMEM;
1237 } 1235 }
1238 1236
1239 append_seq_in_ptr(desc, state->buf_dma, buflen, 0); 1237 append_seq_in_ptr(desc, state->buf_dma, buflen, 0);
@@ -1242,9 +1240,7 @@ static int ahash_final_no_ctx(struct ahash_request *req)
1242 digestsize); 1240 digestsize);
1243 if (dma_mapping_error(jrdev, edesc->dst_dma)) { 1241 if (dma_mapping_error(jrdev, edesc->dst_dma)) {
1244 dev_err(jrdev, "unable to map dst\n"); 1242 dev_err(jrdev, "unable to map dst\n");
1245 ahash_unmap(jrdev, edesc, req, digestsize); 1243 goto unmap;
1246 kfree(edesc);
1247 return -ENOMEM;
1248 } 1244 }
1249 edesc->src_nents = 0; 1245 edesc->src_nents = 0;
1250 1246
@@ -1262,6 +1258,11 @@ static int ahash_final_no_ctx(struct ahash_request *req)
1262 } 1258 }
1263 1259
1264 return ret; 1260 return ret;
1261 unmap:
1262 ahash_unmap(jrdev, edesc, req, digestsize);
1263 kfree(edesc);
1264 return -ENOMEM;
1265
1265} 1266}
1266 1267
1267/* submit ahash update if it the first job descriptor after update */ 1268/* submit ahash update if it the first job descriptor after update */
@@ -1453,18 +1454,14 @@ static int ahash_finup_no_ctx(struct ahash_request *req)
1453 req->nbytes); 1454 req->nbytes);
1454 if (ret) { 1455 if (ret) {
1455 dev_err(jrdev, "unable to map S/G table\n"); 1456 dev_err(jrdev, "unable to map S/G table\n");
1456 ahash_unmap(jrdev, edesc, req, digestsize); 1457 goto unmap;
1457 kfree(edesc);
1458 return -ENOMEM;
1459 } 1458 }
1460 1459
1461 edesc->dst_dma = map_seq_out_ptr_result(desc, jrdev, req->result, 1460 edesc->dst_dma = map_seq_out_ptr_result(desc, jrdev, req->result,
1462 digestsize); 1461 digestsize);
1463 if (dma_mapping_error(jrdev, edesc->dst_dma)) { 1462 if (dma_mapping_error(jrdev, edesc->dst_dma)) {
1464 dev_err(jrdev, "unable to map dst\n"); 1463 dev_err(jrdev, "unable to map dst\n");
1465 ahash_unmap(jrdev, edesc, req, digestsize); 1464 goto unmap;
1466 kfree(edesc);
1467 return -ENOMEM;
1468 } 1465 }
1469 1466
1470#ifdef DEBUG 1467#ifdef DEBUG
@@ -1481,6 +1478,11 @@ static int ahash_finup_no_ctx(struct ahash_request *req)
1481 } 1478 }
1482 1479
1483 return ret; 1480 return ret;
1481 unmap:
1482 ahash_unmap(jrdev, edesc, req, digestsize);
1483 kfree(edesc);
1484 return -ENOMEM;
1485
1484} 1486}
1485 1487
1486/* submit first update job descriptor after init */ 1488/* submit first update job descriptor after init */