2015-09-09 12:27:37

by Corentin Labbe

[permalink] [raw]
Subject: [PATCH] crypto: sun4i-ss Fix a possible driver hang with ciphers

The sun4i_ss_opti_poll function cipher data until the output miter have
a length of 0.
If the crypto API client, give more SGs than necessary this could result
in an infinite loop.
Fix it by checking for remaining bytes, just like sun4i_ss_cipher_poll().

Signed-off-by: LABBE Corentin <[email protected]>
---
drivers/crypto/sunxi-ss/sun4i-ss-cipher.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/crypto/sunxi-ss/sun4i-ss-cipher.c b/drivers/crypto/sunxi-ss/sun4i-ss-cipher.c
index e070c31..a19ee12 100644
--- a/drivers/crypto/sunxi-ss/sun4i-ss-cipher.c
+++ b/drivers/crypto/sunxi-ss/sun4i-ss-cipher.c
@@ -104,7 +104,7 @@ static int sun4i_ss_opti_poll(struct ablkcipher_request *areq)
sg_miter_next(&mo);
oo = 0;
}
- } while (mo.length > 0);
+ } while (oleft > 0);

if (areq->info) {
for (i = 0; i < 4 && i < ivsize / 4; i++) {
--
2.4.6


2015-09-10 09:27:02

by Herbert Xu

[permalink] [raw]
Subject: Re: [PATCH] crypto: sun4i-ss Fix a possible driver hang with ciphers

On Wed, Sep 09, 2015 at 02:27:07PM +0200, LABBE Corentin wrote:
> The sun4i_ss_opti_poll function cipher data until the output miter have
> a length of 0.
> If the crypto API client, give more SGs than necessary this could result
> in an infinite loop.
> Fix it by checking for remaining bytes, just like sun4i_ss_cipher_poll().
>
> Signed-off-by: LABBE Corentin <[email protected]>

Applied.
--
Email: Herbert Xu <[email protected]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt