summaryrefslogtreecommitdiff
path: root/crypto
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2010-05-19 14:06:29 +1000
committerHerbert Xu <herbert@gondor.apana.org.au>2010-05-19 14:06:29 +1000
commitc783f7482f404d34498be354f4c0c859e14ce68c (patch)
treeaa12d1ee59c0c6ab9e34fe4e69b0e14268de2ea6 /crypto
parentbc0c4af91c778afb314a90bdc057dab5157dcd84 (diff)
downloadlinux-crypto-c783f7482f404d34498be354f4c0c859e14ce68c.tar.gz
linux-crypto-c783f7482f404d34498be354f4c0c859e14ce68c.zip
crypto: scatterwalk - Fix scatterwalk_done() test
We are done with the scattergather entry when the walk offset goes past sg->offset + sg->length, not when it crosses a page boundary. There is a similarly queer test in the second half of scatterwalk_pagedone() that probably needs some scrutiny. Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'crypto')
-rw-r--r--crypto/scatterwalk.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/crypto/scatterwalk.c b/crypto/scatterwalk.c
index 3de89a42..41e529af 100644
--- a/crypto/scatterwalk.c
+++ b/crypto/scatterwalk.c
@@ -68,7 +68,7 @@ static void scatterwalk_pagedone(struct scatter_walk *walk, int out,
void scatterwalk_done(struct scatter_walk *walk, int out, int more)
{
- if (!offset_in_page(walk->offset) || !more)
+ if (!(scatterwalk_pagelen(walk) & (PAGE_SIZE - 1)) || !more)
scatterwalk_pagedone(walk, out, more);
}
EXPORT_SYMBOL_GPL(scatterwalk_done);