On Sat, Aug 08, 2015 at 08:47:28AM +0200, Jan Stancek wrote: > Commit 000851119e80 changed sha256/512 update functions to > pass more data to nx_build_sg_list(), which ends with > sg list overflows and usually with update functions failing > for data larger than max_sg_len * NX_PAGE_SIZE. > > This happens because: > - both "total" and "to_process" are updated, which leads to > "to_process" getting overflowed for some data lengths > For example: > In first iteration "total" is 50, and let's assume "to_process" > is 30 due to sg limits. At the end of first iteration "total" is > set to 20. At start of 2nd iteration "to_process" overflows on: > to_process = total - to_process; > - "in_sg" is not reset to nx_ctx->in_sg after each iteration > - nx_build_sg_list() is hitting overflow because the amount of data > passed to it would require more than sgmax elements > - as consequence of previous item, data stored in overflowed sg list > may no longer be aligned to SHA*_BLOCK_SIZE > > This patch changes sha256/512 update functions so that "to_process" > respects sg limits and never tries to pass more data to > nx_build_sg_list() to avoid overflows. "to_process" is calculated > as minimum of "total" and sg limits at start of every iteration. > > Fixes: 000851119e80 ("crypto: nx - Fix SHA concurrence issue and sg > limit bounds") > > Signed-off-by: Jan Stancek <jstancek@xxxxxxxxxx> > Cc: Leonidas Da Silva Barbosa <leosilva@xxxxxxxxxxxxxxxxxx> > Cc: Marcelo Henrique Cerri <mhcerri@xxxxxxxxxxxxxxxxxx> > Cc: Fionnuala Gunter <fin@xxxxxxxxxxxxxxxxxx> > Cc: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> > Cc: "David S. Miller" <davem@xxxxxxxxxxxxx> Patch applied with stable cc. Thanks a lot! -- Email: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt -- To unsubscribe from this list: send the line "unsubscribe linux-crypto" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html