diff options
-rw-r--r-- | crypto/ahash.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/crypto/ahash.c b/crypto/ahash.c index ca0d3e281fef..81e2767e2164 100644 --- a/crypto/ahash.c +++ b/crypto/ahash.c | |||
@@ -86,17 +86,17 @@ static int hash_walk_new_entry(struct crypto_hash_walk *walk) | |||
86 | int crypto_hash_walk_done(struct crypto_hash_walk *walk, int err) | 86 | int crypto_hash_walk_done(struct crypto_hash_walk *walk, int err) |
87 | { | 87 | { |
88 | unsigned int alignmask = walk->alignmask; | 88 | unsigned int alignmask = walk->alignmask; |
89 | unsigned int nbytes = walk->entrylen; | ||
90 | 89 | ||
91 | walk->data -= walk->offset; | 90 | walk->data -= walk->offset; |
92 | 91 | ||
93 | if (nbytes && walk->offset & alignmask && !err) { | 92 | if (walk->entrylen && (walk->offset & alignmask) && !err) { |
94 | walk->offset = ALIGN(walk->offset, alignmask + 1); | 93 | unsigned int nbytes; |
95 | nbytes = min(nbytes, | ||
96 | ((unsigned int)(PAGE_SIZE)) - walk->offset); | ||
97 | walk->entrylen -= nbytes; | ||
98 | 94 | ||
95 | walk->offset = ALIGN(walk->offset, alignmask + 1); | ||
96 | nbytes = min(walk->entrylen, | ||
97 | (unsigned int)(PAGE_SIZE - walk->offset)); | ||
99 | if (nbytes) { | 98 | if (nbytes) { |
99 | walk->entrylen -= nbytes; | ||
100 | walk->data += walk->offset; | 100 | walk->data += walk->offset; |
101 | return nbytes; | 101 | return nbytes; |
102 | } | 102 | } |
@@ -116,7 +116,7 @@ int crypto_hash_walk_done(struct crypto_hash_walk *walk, int err) | |||
116 | if (err) | 116 | if (err) |
117 | return err; | 117 | return err; |
118 | 118 | ||
119 | if (nbytes) { | 119 | if (walk->entrylen) { |
120 | walk->offset = 0; | 120 | walk->offset = 0; |
121 | walk->pg++; | 121 | walk->pg++; |
122 | return hash_walk_next(walk); | 122 | return hash_walk_next(walk); |