Hi Tero,

> I have a couple of additional comments, but can't add them as the patch
> content is an attachment (like, I would not add the WARN_ON.) Overall,
> the issue you have found is a legitimate problem, and should be fixed.

I have used WARN_ON() to have some very visible output, I agree it is not
necessary. This error was possibly a side effect of the &dd->out_sgl aes
bug and I haven't seen it since I have fixed the latter.


Signed-off-by: Francis Le Bourse <francis.lebou...@sfr.fr>
---
 drivers/crypto/omap-crypto.c       | 24 +++++++++++-----------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/drivers/crypto/omap-crypto.c b/drivers/crypto/omap-crypto.c
index 2c42e4b..fbf5a00 100644
--- a/drivers/crypto/omap-crypto.c
+++ b/drivers/crypto/omap-crypto.c
@@ -161,24 +161,24 @@ void omap_crypto_cleanup(struct scatterlist *sg, struct 
scatterlist *orig,
                         int offset, int len, u8 flags_shift,
                         unsigned long flags)
 {
-       void *buf;
-       int pages;
-
        flags >>= flags_shift;
-       flags &= OMAP_CRYPTO_COPY_MASK;
 
-       if (!flags)
-               return;
+       if (flags & OMAP_CRYPTO_DATA_COPIED) {
+               void *buf;
+               int pages;
 
-       buf = sg_virt(sg);
-       pages = get_order(len);
+               if (WARN_ON(!sg_page(sg)))
+                       return;
 
-       if (orig && (flags & OMAP_CRYPTO_COPY_MASK))
-               scatterwalk_map_and_copy(buf, orig, offset, len, 1);
+               buf = sg_virt(sg);
+               pages = get_order(len);
 
-       if (flags & OMAP_CRYPTO_DATA_COPIED)
+               if (orig)
+                       scatterwalk_map_and_copy(buf, orig, offset, len, 1);
                free_pages((unsigned long)buf, pages);
-       else if (flags & OMAP_CRYPTO_SG_COPIED)
+       }
+
+       if (flags & OMAP_CRYPTO_SG_COPIED)
                kfree(sg);
 }
 EXPORT_SYMBOL_GPL(omap_crypto_cleanup);

Reply via email to