Commit 7bdcd851 authored by Corentin Labbe's avatar Corentin Labbe Committed by Herbert Xu
Browse files

crypto: sun4i-ss - checking sg length is not sufficient



The optimized cipher function need length multiple of 4 bytes.
But it get sometimes odd length.
This is due to SG data could be stored with an offset.

So the fix is to check also if the offset is aligned with 4 bytes.
Fixes: 6298e948 ("crypto: sunxi-ss - Add Allwinner Security System crypto accelerator")
Cc: <stable@vger.kernel.org>
Signed-off-by: default avatarCorentin Labbe <clabbe@baylibre.com>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent 58351351
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -186,12 +186,12 @@ static int sun4i_ss_cipher_poll(struct skcipher_request *areq)
	 * we can use the SS optimized function
	 * we can use the SS optimized function
	 */
	 */
	while (in_sg && no_chunk == 1) {
	while (in_sg && no_chunk == 1) {
		if (in_sg->length % 4)
		if ((in_sg->length | in_sg->offset) & 3u)
			no_chunk = 0;
			no_chunk = 0;
		in_sg = sg_next(in_sg);
		in_sg = sg_next(in_sg);
	}
	}
	while (out_sg && no_chunk == 1) {
	while (out_sg && no_chunk == 1) {
		if (out_sg->length % 4)
		if ((out_sg->length | out_sg->offset) & 3u)
			no_chunk = 0;
			no_chunk = 0;
		out_sg = sg_next(out_sg);
		out_sg = sg_next(out_sg);
	}
	}