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.lebourse@xxxxxx> --- 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);