2020-09-22 10:33:18

by Zhenzhong Duan

[permalink] [raw]
Subject: [PATCH] s390/zcrypt: Fix a size determination in zcrypt_unlocked_ioctl()

With new ioctl(ZCRYPT_PERDEV_REQCNT) introduced, kernel use dynamic
allocation for the 256 element array of unsigned integers for the number
of successfully completed requests per device. It's not a static array of
64 elements any more.

Fixes: af4a72276d49 ("s390/zcrypt: Support up to 256 crypto adapters.")
Signed-off-by: Zhenzhong Duan <[email protected]>
---
drivers/s390/crypto/zcrypt_api.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/s390/crypto/zcrypt_api.c b/drivers/s390/crypto/zcrypt_api.c
index 4dbbfd88262c..5c3f3f89e2f3 100644
--- a/drivers/s390/crypto/zcrypt_api.c
+++ b/drivers/s390/crypto/zcrypt_api.c
@@ -1449,7 +1449,7 @@ static long zcrypt_unlocked_ioctl(struct file *filp, unsigned int cmd,
if (!reqcnt)
return -ENOMEM;
zcrypt_perdev_reqcnt(reqcnt, AP_DEVICES);
- if (copy_to_user((int __user *) arg, reqcnt, sizeof(reqcnt)))
+ if (copy_to_user((int __user *) arg, reqcnt, sizeof(u32) * AP_DEVICES))
rc = -EFAULT;
kfree(reqcnt);
return rc;
--
2.25.1


2020-09-22 10:49:41

by Christian Borntraeger

[permalink] [raw]
Subject: Re: [PATCH] s390/zcrypt: Fix a size determination in zcrypt_unlocked_ioctl()

On 22.09.20 12:30, Zhenzhong Duan wrote:
> With new ioctl(ZCRYPT_PERDEV_REQCNT) introduced, kernel use dynamic
> allocation for the 256 element array of unsigned integers for the number
> of successfully completed requests per device. It's not a static array of
> 64 elements any more.
>
> Fixes: af4a72276d49 ("s390/zcrypt: Support up to 256 crypto adapters.")
> Signed-off-by: Zhenzhong Duan <[email protected]>

Thanks for the patch, but we have a similar patch already queued internally.
(Found with coccicheck).
> ---
> drivers/s390/crypto/zcrypt_api.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/s390/crypto/zcrypt_api.c b/drivers/s390/crypto/zcrypt_api.c
> index 4dbbfd88262c..5c3f3f89e2f3 100644
> --- a/drivers/s390/crypto/zcrypt_api.c
> +++ b/drivers/s390/crypto/zcrypt_api.c
> @@ -1449,7 +1449,7 @@ static long zcrypt_unlocked_ioctl(struct file *filp, unsigned int cmd,
> if (!reqcnt)
> return -ENOMEM;
> zcrypt_perdev_reqcnt(reqcnt, AP_DEVICES);
> - if (copy_to_user((int __user *) arg, reqcnt, sizeof(reqcnt)))
> + if (copy_to_user((int __user *) arg, reqcnt, sizeof(u32) * AP_DEVICES))
> rc = -EFAULT;
> kfree(reqcnt);
> return rc;
>