diff options
-rw-r--r-- | crypto/xcbc.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/crypto/xcbc.c b/crypto/xcbc.c index 2feb0f239c3..b63b633e549 100644 --- a/crypto/xcbc.c +++ b/crypto/xcbc.c | |||
@@ -116,13 +116,11 @@ static int crypto_xcbc_digest_update2(struct hash_desc *pdesc, | |||
116 | struct crypto_xcbc_ctx *ctx = crypto_hash_ctx_aligned(parent); | 116 | struct crypto_xcbc_ctx *ctx = crypto_hash_ctx_aligned(parent); |
117 | struct crypto_cipher *tfm = ctx->child; | 117 | struct crypto_cipher *tfm = ctx->child; |
118 | int bs = crypto_hash_blocksize(parent); | 118 | int bs = crypto_hash_blocksize(parent); |
119 | unsigned int i = 0; | ||
120 | 119 | ||
121 | do { | 120 | for (;;) { |
122 | 121 | struct page *pg = sg_page(sg); | |
123 | struct page *pg = sg_page(&sg[i]); | 122 | unsigned int offset = sg->offset; |
124 | unsigned int offset = sg[i].offset; | 123 | unsigned int slen = sg->length; |
125 | unsigned int slen = sg[i].length; | ||
126 | 124 | ||
127 | if (unlikely(slen > nbytes)) | 125 | if (unlikely(slen > nbytes)) |
128 | slen = nbytes; | 126 | slen = nbytes; |
@@ -182,8 +180,11 @@ static int crypto_xcbc_digest_update2(struct hash_desc *pdesc, | |||
182 | offset = 0; | 180 | offset = 0; |
183 | pg++; | 181 | pg++; |
184 | } | 182 | } |
185 | i++; | 183 | |
186 | } while (nbytes>0); | 184 | if (!nbytes) |
185 | break; | ||
186 | sg = scatterwalk_sg_next(sg); | ||
187 | } | ||
187 | 188 | ||
188 | return 0; | 189 | return 0; |
189 | } | 190 | } |