diff options
-rw-r--r-- | drivers/crypto/nx/nx-aes-ctr.c | 13 |
1 files changed, 3 insertions, 10 deletions
diff --git a/drivers/crypto/nx/nx-aes-ctr.c b/drivers/crypto/nx/nx-aes-ctr.c index a37d009dc75c..2617cd4d54dd 100644 --- a/drivers/crypto/nx/nx-aes-ctr.c +++ b/drivers/crypto/nx/nx-aes-ctr.c | |||
@@ -90,22 +90,14 @@ static int ctr_aes_nx_crypt(struct blkcipher_desc *desc, | |||
90 | struct nx_csbcpb *csbcpb = nx_ctx->csbcpb; | 90 | struct nx_csbcpb *csbcpb = nx_ctx->csbcpb; |
91 | unsigned long irq_flags; | 91 | unsigned long irq_flags; |
92 | unsigned int processed = 0, to_process; | 92 | unsigned int processed = 0, to_process; |
93 | u32 max_sg_len; | ||
94 | int rc; | 93 | int rc; |
95 | 94 | ||
96 | spin_lock_irqsave(&nx_ctx->lock, irq_flags); | 95 | spin_lock_irqsave(&nx_ctx->lock, irq_flags); |
97 | 96 | ||
98 | max_sg_len = min_t(u32, nx_driver.of.max_sg_len/sizeof(struct nx_sg), | ||
99 | nx_ctx->ap->sglen); | ||
100 | |||
101 | do { | 97 | do { |
102 | to_process = min_t(u64, nbytes - processed, | 98 | to_process = nbytes - processed; |
103 | nx_ctx->ap->databytelen); | ||
104 | to_process = min_t(u64, to_process, | ||
105 | NX_PAGE_SIZE * (max_sg_len - 1)); | ||
106 | to_process = to_process & ~(AES_BLOCK_SIZE - 1); | ||
107 | 99 | ||
108 | rc = nx_build_sg_lists(nx_ctx, desc, dst, src, to_process, | 100 | rc = nx_build_sg_lists(nx_ctx, desc, dst, src, &to_process, |
109 | processed, csbcpb->cpb.aes_ctr.iv); | 101 | processed, csbcpb->cpb.aes_ctr.iv); |
110 | if (rc) | 102 | if (rc) |
111 | goto out; | 103 | goto out; |
@@ -143,6 +135,7 @@ static int ctr3686_aes_nx_crypt(struct blkcipher_desc *desc, | |||
143 | 135 | ||
144 | memcpy(iv + CTR_RFC3686_NONCE_SIZE, | 136 | memcpy(iv + CTR_RFC3686_NONCE_SIZE, |
145 | desc->info, CTR_RFC3686_IV_SIZE); | 137 | desc->info, CTR_RFC3686_IV_SIZE); |
138 | iv[12] = iv[13] = iv[14] = 0; | ||
146 | iv[15] = 1; | 139 | iv[15] = 1; |
147 | 140 | ||
148 | desc->info = nx_ctx->priv.ctr.iv; | 141 | desc->info = nx_ctx->priv.ctr.iv; |