The function ablkcipher_done_slow is pretty much identical to
scatterwalk_copychunks except that it doesn't actually copy as
the processing hasn't been completed yet.

This patch allows scatterwalk_copychunks to be used in this case
by specifying out == 2.

Signed-off-by: Herbert Xu <[email protected]>
---

 crypto/scatterwalk.c |   10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/crypto/scatterwalk.c b/crypto/scatterwalk.c
index 03ca4ae..e124ce2 100644
--- a/crypto/scatterwalk.c
+++ b/crypto/scatterwalk.c
@@ -87,9 +87,11 @@ void scatterwalk_copychunks(void *buf, struct scatter_walk 
*walk,
                if (len_this_page > nbytes)
                        len_this_page = nbytes;
 
-               vaddr = scatterwalk_map(walk);
-               memcpy_dir(buf, vaddr, len_this_page, out);
-               scatterwalk_unmap(vaddr);
+               if (out != 2) {
+                       vaddr = scatterwalk_map(walk);
+                       memcpy_dir(buf, vaddr, len_this_page, out);
+                       scatterwalk_unmap(vaddr);
+               }
 
                scatterwalk_advance(walk, len_this_page);
 
@@ -99,7 +101,7 @@ void scatterwalk_copychunks(void *buf, struct scatter_walk 
*walk,
                buf += len_this_page;
                nbytes -= len_this_page;
 
-               scatterwalk_pagedone(walk, out, 1);
+               scatterwalk_pagedone(walk, out & 1, 1);
        }
 }
 EXPORT_SYMBOL_GPL(scatterwalk_copychunks);
--
To unsubscribe from this list: send the line "unsubscribe linux-crypto" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to