diff options
-rw-r--r-- | crypto/gcm.c | 17 | ||||
-rw-r--r-- | drivers/crypto/ux500/cryp/cryp_core.c | 2 |
2 files changed, 15 insertions, 4 deletions
diff --git a/crypto/gcm.c b/crypto/gcm.c index 137ad1ec5438..13ccbda34ff9 100644 --- a/crypto/gcm.c +++ b/crypto/gcm.c | |||
@@ -44,6 +44,7 @@ struct crypto_rfc4543_ctx { | |||
44 | 44 | ||
45 | struct crypto_rfc4543_req_ctx { | 45 | struct crypto_rfc4543_req_ctx { |
46 | u8 auth_tag[16]; | 46 | u8 auth_tag[16]; |
47 | u8 assocbuf[32]; | ||
47 | struct scatterlist cipher[1]; | 48 | struct scatterlist cipher[1]; |
48 | struct scatterlist payload[2]; | 49 | struct scatterlist payload[2]; |
49 | struct scatterlist assoc[2]; | 50 | struct scatterlist assoc[2]; |
@@ -1133,9 +1134,19 @@ static struct aead_request *crypto_rfc4543_crypt(struct aead_request *req, | |||
1133 | scatterwalk_crypto_chain(payload, dst, vdst == req->iv + 8, 2); | 1134 | scatterwalk_crypto_chain(payload, dst, vdst == req->iv + 8, 2); |
1134 | assoclen += 8 + req->cryptlen - (enc ? 0 : authsize); | 1135 | assoclen += 8 + req->cryptlen - (enc ? 0 : authsize); |
1135 | 1136 | ||
1136 | sg_init_table(assoc, 2); | 1137 | if (req->assoc->length == req->assoclen) { |
1137 | sg_set_page(assoc, sg_page(req->assoc), req->assoc->length, | 1138 | sg_init_table(assoc, 2); |
1138 | req->assoc->offset); | 1139 | sg_set_page(assoc, sg_page(req->assoc), req->assoc->length, |
1140 | req->assoc->offset); | ||
1141 | } else { | ||
1142 | BUG_ON(req->assoclen > sizeof(rctx->assocbuf)); | ||
1143 | |||
1144 | scatterwalk_map_and_copy(rctx->assocbuf, req->assoc, 0, | ||
1145 | req->assoclen, 0); | ||
1146 | |||
1147 | sg_init_table(assoc, 2); | ||
1148 | sg_set_buf(assoc, rctx->assocbuf, req->assoclen); | ||
1149 | } | ||
1139 | scatterwalk_crypto_chain(assoc, payload, 0, 2); | 1150 | scatterwalk_crypto_chain(assoc, payload, 0, 2); |
1140 | 1151 | ||
1141 | aead_request_set_tfm(subreq, ctx->child); | 1152 | aead_request_set_tfm(subreq, ctx->child); |
diff --git a/drivers/crypto/ux500/cryp/cryp_core.c b/drivers/crypto/ux500/cryp/cryp_core.c index 8bc5fef07e7a..22c9063e0120 100644 --- a/drivers/crypto/ux500/cryp/cryp_core.c +++ b/drivers/crypto/ux500/cryp/cryp_core.c | |||
@@ -1750,7 +1750,7 @@ static struct platform_driver cryp_driver = { | |||
1750 | .shutdown = ux500_cryp_shutdown, | 1750 | .shutdown = ux500_cryp_shutdown, |
1751 | .driver = { | 1751 | .driver = { |
1752 | .owner = THIS_MODULE, | 1752 | .owner = THIS_MODULE, |
1753 | .name = "cryp1" | 1753 | .name = "cryp1", |
1754 | .pm = &ux500_cryp_pm, | 1754 | .pm = &ux500_cryp_pm, |
1755 | } | 1755 | } |
1756 | }; | 1756 | }; |