2016-11-18 11:11:53

by Dan Carpenter

[permalink] [raw]
Subject: [patch] s390/crypto: unlock on error in prng_tdes_read()

We added some new locking but forgot to unlock on error.

Fixes: 57127645d79d ("s390/zcrypt: Introduce new SHA-512 based Pseudo Random Generator.")
Signed-off-by: Dan Carpenter <[email protected]>

diff --git a/arch/s390/crypto/prng.c b/arch/s390/crypto/prng.c
index 9cc050f..1113389 100644
--- a/arch/s390/crypto/prng.c
+++ b/arch/s390/crypto/prng.c
@@ -507,8 +507,10 @@ static ssize_t prng_tdes_read(struct file *file, char __user *ubuf,
prng_data->prngws.byte_counter += n;
prng_data->prngws.reseed_counter += n;

- if (copy_to_user(ubuf, prng_data->buf, chunk))
- return -EFAULT;
+ if (copy_to_user(ubuf, prng_data->buf, chunk)) {
+ ret = -EFAULT;
+ break;
+ }

nbytes -= chunk;
ret += chunk;


2016-11-18 12:12:47

by Martin Schwidefsky

[permalink] [raw]
Subject: Re: [patch] s390/crypto: unlock on error in prng_tdes_read()

On Fri, 18 Nov 2016 14:11:00 +0300
Dan Carpenter <[email protected]> wrote:

> We added some new locking but forgot to unlock on error.
>
> Fixes: 57127645d79d ("s390/zcrypt: Introduce new SHA-512 based Pseudo Random Generator.")
> Signed-off-by: Dan Carpenter <[email protected]>
>
> diff --git a/arch/s390/crypto/prng.c b/arch/s390/crypto/prng.c
> index 9cc050f..1113389 100644
> --- a/arch/s390/crypto/prng.c
> +++ b/arch/s390/crypto/prng.c
> @@ -507,8 +507,10 @@ static ssize_t prng_tdes_read(struct file *file, char __user *ubuf,
> prng_data->prngws.byte_counter += n;
> prng_data->prngws.reseed_counter += n;
>
> - if (copy_to_user(ubuf, prng_data->buf, chunk))
> - return -EFAULT;
> + if (copy_to_user(ubuf, prng_data->buf, chunk)) {
> + ret = -EFAULT;
> + break;
> + }
>
> nbytes -= chunk;
> ret += chunk;
>

Nice spotting, I will add this to my fixes tree. Thank you..

--
blue skies,
Martin.

"Reality continues to ruin my life." - Calvin.