diff options
Diffstat (limited to 'drivers/crypto/nx')
-rw-r--r-- | drivers/crypto/nx/nx-aes-cbc.c | 2 | ||||
-rw-r--r-- | drivers/crypto/nx/nx-aes-ccm.c | 4 | ||||
-rw-r--r-- | drivers/crypto/nx/nx-aes-ctr.c | 2 | ||||
-rw-r--r-- | drivers/crypto/nx/nx-aes-ecb.c | 2 | ||||
-rw-r--r-- | drivers/crypto/nx/nx-aes-gcm.c | 2 | ||||
-rw-r--r-- | drivers/crypto/nx/nx.c | 9 | ||||
-rw-r--r-- | drivers/crypto/nx/nx.h | 2 |
7 files changed, 14 insertions, 9 deletions
diff --git a/drivers/crypto/nx/nx-aes-cbc.c b/drivers/crypto/nx/nx-aes-cbc.c index 7c0237dae02d..a9e76c6c37d8 100644 --- a/drivers/crypto/nx/nx-aes-cbc.c +++ b/drivers/crypto/nx/nx-aes-cbc.c | |||
@@ -85,7 +85,7 @@ static int cbc_aes_nx_crypt(struct blkcipher_desc *desc, | |||
85 | else | 85 | else |
86 | NX_CPB_FDM(csbcpb) &= ~NX_FDM_ENDE_ENCRYPT; | 86 | NX_CPB_FDM(csbcpb) &= ~NX_FDM_ENDE_ENCRYPT; |
87 | 87 | ||
88 | rc = nx_build_sg_lists(nx_ctx, desc, dst, src, nbytes, | 88 | rc = nx_build_sg_lists(nx_ctx, desc, dst, src, nbytes, 0, |
89 | csbcpb->cpb.aes_cbc.iv); | 89 | csbcpb->cpb.aes_cbc.iv); |
90 | if (rc) | 90 | if (rc) |
91 | goto out; | 91 | goto out; |
diff --git a/drivers/crypto/nx/nx-aes-ccm.c b/drivers/crypto/nx/nx-aes-ccm.c index 39d42245bc79..666a35b1181a 100644 --- a/drivers/crypto/nx/nx-aes-ccm.c +++ b/drivers/crypto/nx/nx-aes-ccm.c | |||
@@ -293,7 +293,7 @@ static int ccm_nx_decrypt(struct aead_request *req, | |||
293 | if (rc) | 293 | if (rc) |
294 | goto out; | 294 | goto out; |
295 | 295 | ||
296 | rc = nx_build_sg_lists(nx_ctx, desc, req->dst, req->src, nbytes, | 296 | rc = nx_build_sg_lists(nx_ctx, desc, req->dst, req->src, nbytes, 0, |
297 | csbcpb->cpb.aes_ccm.iv_or_ctr); | 297 | csbcpb->cpb.aes_ccm.iv_or_ctr); |
298 | if (rc) | 298 | if (rc) |
299 | goto out; | 299 | goto out; |
@@ -339,7 +339,7 @@ static int ccm_nx_encrypt(struct aead_request *req, | |||
339 | if (rc) | 339 | if (rc) |
340 | goto out; | 340 | goto out; |
341 | 341 | ||
342 | rc = nx_build_sg_lists(nx_ctx, desc, req->dst, req->src, nbytes, | 342 | rc = nx_build_sg_lists(nx_ctx, desc, req->dst, req->src, nbytes, 0, |
343 | csbcpb->cpb.aes_ccm.iv_or_ctr); | 343 | csbcpb->cpb.aes_ccm.iv_or_ctr); |
344 | if (rc) | 344 | if (rc) |
345 | goto out; | 345 | goto out; |
diff --git a/drivers/crypto/nx/nx-aes-ctr.c b/drivers/crypto/nx/nx-aes-ctr.c index 762611b883cb..80dee8d58659 100644 --- a/drivers/crypto/nx/nx-aes-ctr.c +++ b/drivers/crypto/nx/nx-aes-ctr.c | |||
@@ -98,7 +98,7 @@ static int ctr_aes_nx_crypt(struct blkcipher_desc *desc, | |||
98 | goto out; | 98 | goto out; |
99 | } | 99 | } |
100 | 100 | ||
101 | rc = nx_build_sg_lists(nx_ctx, desc, dst, src, nbytes, | 101 | rc = nx_build_sg_lists(nx_ctx, desc, dst, src, nbytes, 0, |
102 | csbcpb->cpb.aes_ctr.iv); | 102 | csbcpb->cpb.aes_ctr.iv); |
103 | if (rc) | 103 | if (rc) |
104 | goto out; | 104 | goto out; |
diff --git a/drivers/crypto/nx/nx-aes-ecb.c b/drivers/crypto/nx/nx-aes-ecb.c index 77dbe084ba41..fe0d803ed233 100644 --- a/drivers/crypto/nx/nx-aes-ecb.c +++ b/drivers/crypto/nx/nx-aes-ecb.c | |||
@@ -85,7 +85,7 @@ static int ecb_aes_nx_crypt(struct blkcipher_desc *desc, | |||
85 | else | 85 | else |
86 | NX_CPB_FDM(csbcpb) &= ~NX_FDM_ENDE_ENCRYPT; | 86 | NX_CPB_FDM(csbcpb) &= ~NX_FDM_ENDE_ENCRYPT; |
87 | 87 | ||
88 | rc = nx_build_sg_lists(nx_ctx, desc, dst, src, nbytes, NULL); | 88 | rc = nx_build_sg_lists(nx_ctx, desc, dst, src, nbytes, 0, NULL); |
89 | if (rc) | 89 | if (rc) |
90 | goto out; | 90 | goto out; |
91 | 91 | ||
diff --git a/drivers/crypto/nx/nx-aes-gcm.c b/drivers/crypto/nx/nx-aes-gcm.c index 74feee10f943..c2d6f76e3677 100644 --- a/drivers/crypto/nx/nx-aes-gcm.c +++ b/drivers/crypto/nx/nx-aes-gcm.c | |||
@@ -226,7 +226,7 @@ static int gcm_aes_nx_crypt(struct aead_request *req, int enc) | |||
226 | 226 | ||
227 | csbcpb->cpb.aes_gcm.bit_length_data = nbytes * 8; | 227 | csbcpb->cpb.aes_gcm.bit_length_data = nbytes * 8; |
228 | 228 | ||
229 | rc = nx_build_sg_lists(nx_ctx, &desc, req->dst, req->src, nbytes, | 229 | rc = nx_build_sg_lists(nx_ctx, &desc, req->dst, req->src, nbytes, 0, |
230 | csbcpb->cpb.aes_gcm.iv_or_cnt); | 230 | csbcpb->cpb.aes_gcm.iv_or_cnt); |
231 | if (rc) | 231 | if (rc) |
232 | goto out; | 232 | goto out; |
diff --git a/drivers/crypto/nx/nx.c b/drivers/crypto/nx/nx.c index bdf4990f9758..5533fe31c90d 100644 --- a/drivers/crypto/nx/nx.c +++ b/drivers/crypto/nx/nx.c | |||
@@ -211,6 +211,8 @@ struct nx_sg *nx_walk_and_build(struct nx_sg *nx_dst, | |||
211 | * @dst: destination scatterlist | 211 | * @dst: destination scatterlist |
212 | * @src: source scatterlist | 212 | * @src: source scatterlist |
213 | * @nbytes: length of data described in the scatterlists | 213 | * @nbytes: length of data described in the scatterlists |
214 | * @offset: number of bytes to fast-forward past at the beginning of | ||
215 | * scatterlists. | ||
214 | * @iv: destination for the iv data, if the algorithm requires it | 216 | * @iv: destination for the iv data, if the algorithm requires it |
215 | * | 217 | * |
216 | * This is common code shared by all the AES algorithms. It uses the block | 218 | * This is common code shared by all the AES algorithms. It uses the block |
@@ -222,6 +224,7 @@ int nx_build_sg_lists(struct nx_crypto_ctx *nx_ctx, | |||
222 | struct scatterlist *dst, | 224 | struct scatterlist *dst, |
223 | struct scatterlist *src, | 225 | struct scatterlist *src, |
224 | unsigned int nbytes, | 226 | unsigned int nbytes, |
227 | unsigned int offset, | ||
225 | u8 *iv) | 228 | u8 *iv) |
226 | { | 229 | { |
227 | struct nx_sg *nx_insg = nx_ctx->in_sg; | 230 | struct nx_sg *nx_insg = nx_ctx->in_sg; |
@@ -230,8 +233,10 @@ int nx_build_sg_lists(struct nx_crypto_ctx *nx_ctx, | |||
230 | if (iv) | 233 | if (iv) |
231 | memcpy(iv, desc->info, AES_BLOCK_SIZE); | 234 | memcpy(iv, desc->info, AES_BLOCK_SIZE); |
232 | 235 | ||
233 | nx_insg = nx_walk_and_build(nx_insg, nx_ctx->ap->sglen, src, 0, nbytes); | 236 | nx_insg = nx_walk_and_build(nx_insg, nx_ctx->ap->sglen, src, |
234 | nx_outsg = nx_walk_and_build(nx_outsg, nx_ctx->ap->sglen, dst, 0, nbytes); | 237 | offset, nbytes); |
238 | nx_outsg = nx_walk_and_build(nx_outsg, nx_ctx->ap->sglen, dst, | ||
239 | offset, nbytes); | ||
235 | 240 | ||
236 | /* these lengths should be negative, which will indicate to phyp that | 241 | /* these lengths should be negative, which will indicate to phyp that |
237 | * the input and output parameters are scatterlists, not linear | 242 | * the input and output parameters are scatterlists, not linear |
diff --git a/drivers/crypto/nx/nx.h b/drivers/crypto/nx/nx.h index 14bb97f1c339..befda07ca1da 100644 --- a/drivers/crypto/nx/nx.h +++ b/drivers/crypto/nx/nx.h | |||
@@ -156,7 +156,7 @@ int nx_hcall_sync(struct nx_crypto_ctx *ctx, struct vio_pfo_op *op, | |||
156 | struct nx_sg *nx_build_sg_list(struct nx_sg *, u8 *, unsigned int, u32); | 156 | struct nx_sg *nx_build_sg_list(struct nx_sg *, u8 *, unsigned int, u32); |
157 | int nx_build_sg_lists(struct nx_crypto_ctx *, struct blkcipher_desc *, | 157 | int nx_build_sg_lists(struct nx_crypto_ctx *, struct blkcipher_desc *, |
158 | struct scatterlist *, struct scatterlist *, unsigned int, | 158 | struct scatterlist *, struct scatterlist *, unsigned int, |
159 | u8 *); | 159 | unsigned int, u8 *); |
160 | struct nx_sg *nx_walk_and_build(struct nx_sg *, unsigned int, | 160 | struct nx_sg *nx_walk_and_build(struct nx_sg *, unsigned int, |
161 | struct scatterlist *, unsigned int, | 161 | struct scatterlist *, unsigned int, |
162 | unsigned int); | 162 | unsigned int); |