aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/crypto/nx
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/crypto/nx')
-rw-r--r--drivers/crypto/nx/nx-aes-cbc.c2
-rw-r--r--drivers/crypto/nx/nx-aes-ccm.c4
-rw-r--r--drivers/crypto/nx/nx-aes-ctr.c2
-rw-r--r--drivers/crypto/nx/nx-aes-ecb.c2
-rw-r--r--drivers/crypto/nx/nx-aes-gcm.c2
-rw-r--r--drivers/crypto/nx/nx.c9
-rw-r--r--drivers/crypto/nx/nx.h2
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,
156struct nx_sg *nx_build_sg_list(struct nx_sg *, u8 *, unsigned int, u32); 156struct nx_sg *nx_build_sg_list(struct nx_sg *, u8 *, unsigned int, u32);
157int nx_build_sg_lists(struct nx_crypto_ctx *, struct blkcipher_desc *, 157int 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 *);
160struct nx_sg *nx_walk_and_build(struct nx_sg *, unsigned int, 160struct 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);