Patch "crypto: omap-aes - Fix support for unequal lengths" has been added to the 4.0-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
crypto: omap-aes - Fix support for unequal lengths
to the 4.0-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
crypto-omap-aes-fix-support-for-unequal-lengths.patch
and it can be found in the queue-4.0 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
6d7e7e02a044025237b6f62a20521170b794537fMon Sep 17 00:00:00 2001
From: "Vutla, Lokesh" <[email protected]>
Date: Tue, 31 Mar 2015 09:52:25 +0530
Subject: crypto: omap-aes - Fix support for unequal lengths
From: "Vutla, Lokesh" <[email protected]>
commit 6d7e7e02a044025237b6f62a20521170b794537f upstream.
For cases where total length of an input SGs is not same as length of the input data for encryption, omap-aes driver crashes. This happens in the case when IPsec is trying to use omap-aes driver.
To avoid this, we copy all the pages from the input SG list into a contiguous buffer and prepare a single element SG list for this buffer with length as the total bytes to crypt, which is similar thing that is done in case of unaligned lengths.
--- drivers/crypto/omap-aes.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-)
drivers/crypto/omap-aes.c +11 -3
@@ -554,15 +554,23 @@ static int omap_aes_crypt_dma_stop(strucreturn err; } -static int omap_aes_check_aligned (struct scatterlist *sg) +static int omap_aes_check_aligned (struct scatterlist *sg,int total) { +int len =0 ; +while (sg) {if (!IS_ALIGNED (sg->offset,4 ))return -1 ;if (!IS_ALIGNED (sg->length,AES_BLOCK_SIZE ))return -1 ; + + len += sg->length; sg =sg_next (sg); } + +if (len != total) +return -1 ; +return 0 ; }
@@ -633,8 +641,8 @@ static int omap_aes_handle_queue(struct dd->in_sg = req->src; dd->out_sg = req->dst; -if (omap_aes_check_aligned (dd->in_sg) || -omap_aes_check_aligned (dd->out_sg)) { +if (omap_aes_check_aligned (dd->in_sg, dd->total) || +omap_aes_check_aligned (dd->out_sg, dd->total)) {if (omap_aes_copy_sgs (dd))pr_err ("Failed to copy SGs for unaligned cases\n" ); dd->sgs_copied =1 ;
Patches currently in stable-queue which might be from [email protected] are
queue-4.0/crypto-omap-aes-fix-support-for-unequal-lengths.patch