Re: [PATCH] x86-ksysfs: Use kmalloc_array() in create_setup_data_nodes()

From: Kees Cook
Date: Tue Sep 06 2016 - 17:49:59 EST


On Sun, Sep 4, 2016 at 4:23 PM, SF Markus Elfring
<elfring@xxxxxxxxxxxxxxxxxxxxx> wrote:
> From: Markus Elfring <elfring@xxxxxxxxxxxxxxxxxxxxx>
> Date: Sun, 4 Sep 2016 22:15:09 +0200
>
> A multiplication for the size determination of a memory allocation
> indicated that an array data structure should be processed.
> Thus use the corresponding function "kmalloc_array".
>
> This issue was detected by using the Coccinelle software.

Which rule-set was used?

>
> Signed-off-by: Markus Elfring <elfring@xxxxxxxxxxxxxxxxxxxxx>

While probably impossible to overflow in the real world, it's still
better to use the right function here.

Acked-by: Kees Cook <keescook@xxxxxxxxxxxx>

> ---
> arch/x86/kernel/ksysfs.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/x86/kernel/ksysfs.c b/arch/x86/kernel/ksysfs.c
> index 4afc67f..cddf3c6 100644
> --- a/arch/x86/kernel/ksysfs.c
> +++ b/arch/x86/kernel/ksysfs.c
> @@ -283,7 +283,7 @@ static int __init create_setup_data_nodes(struct kobject *parent)
> if (ret)
> goto out_setup_data_kobj;
>
> - kobjp = kmalloc(sizeof(*kobjp) * nr, GFP_KERNEL);
> + kobjp = kmalloc_array(nr, sizeof(*kobjp), GFP_KERNEL);
> if (!kobjp) {
> ret = -ENOMEM;
> goto out_setup_data_kobj;
> --
> 2.9.3
>



--
Kees Cook
Nexus Security