On Mon, Jun 29, 2026 at 9:29 AM David Francis <[email protected]> wrote:
>
> There were a few instances in kfd_chardev.c of kvzalloc being
> used to allocate memory for an array.
>
> Switch those to kvcalloc, which
> - is the standard way of allocating a xero-initialized array
> - does a check for the mul overflowing
>
> Signed-off-by: David Francis <[email protected]>

Reviewed-by: Alex Deucher <[email protected]>

> ---
>  drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 12 ++++++------
>  1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c 
> b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
> index ab9e53dc8deb..7d8215169c10 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
> @@ -1917,13 +1917,13 @@ static int criu_checkpoint_devices(struct kfd_process 
> *p,
>         struct kfd_criu_device_bucket *device_buckets = NULL;
>         int ret = 0, i;
>
> -       device_buckets = kvzalloc(num_devices * sizeof(*device_buckets), 
> GFP_KERNEL);
> +       device_buckets = kvcalloc(num_devices, sizeof(*device_buckets), 
> GFP_KERNEL);
>         if (!device_buckets) {
>                 ret = -ENOMEM;
>                 goto exit;
>         }
>
> -       device_priv = kvzalloc(num_devices * sizeof(*device_priv), 
> GFP_KERNEL);
> +       device_priv = kvcalloc(num_devices, sizeof(*device_priv), GFP_KERNEL);
>         if (!device_priv) {
>                 ret = -ENOMEM;
>                 goto exit;
> @@ -2043,17 +2043,17 @@ static int criu_checkpoint_bos(struct kfd_process *p,
>         int ret = 0, pdd_index, bo_index = 0, id;
>         void *mem;
>
> -       bo_buckets = kvzalloc(num_bos * sizeof(*bo_buckets), GFP_KERNEL);
> +       bo_buckets = kvcalloc(num_bos, sizeof(*bo_buckets), GFP_KERNEL);
>         if (!bo_buckets)
>                 return -ENOMEM;
>
> -       bo_privs = kvzalloc(num_bos * sizeof(*bo_privs), GFP_KERNEL);
> +       bo_privs = kvcalloc(num_bos, sizeof(*bo_privs), GFP_KERNEL);
>         if (!bo_privs) {
>                 ret = -ENOMEM;
>                 goto exit;
>         }
>
> -       files = kvzalloc(num_bos * sizeof(struct file *), GFP_KERNEL);
> +       files = kvcalloc(num_bos, sizeof(struct file *), GFP_KERNEL);
>         if (!files) {
>                 ret = -ENOMEM;
>                 goto exit;
> @@ -2584,7 +2584,7 @@ static int criu_restore_bos(struct kfd_process *p,
>         if (!bo_buckets)
>                 return -ENOMEM;
>
> -       files = kvzalloc(args->num_bos * sizeof(struct file *), GFP_KERNEL);
> +       files = kvcalloc(args->num_bos, sizeof(struct file *), GFP_KERNEL);
>         if (!files) {
>                 ret = -ENOMEM;
>                 goto exit;
> --
> 2.34.1
>

Reply via email to