[PATCH v1] platform/chrome: chromeos_laptop: Use kmemdup_array instead of kmemdup for multiple allocation

Yu Jiaoliang posted 1 patch 1 year, 5 months ago
There is a newer version of this series
drivers/platform/chrome/chromeos_laptop.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
[PATCH v1] platform/chrome: chromeos_laptop: Use kmemdup_array instead of kmemdup for multiple allocation
Posted by Yu Jiaoliang 1 year, 5 months ago
Let the kememdup_array() take care about multiplication and possible
overflows.

Signed-off-by: Yu Jiaoliang <yujiaoliang@vivo.com>
---
 drivers/platform/chrome/chromeos_laptop.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/platform/chrome/chromeos_laptop.c b/drivers/platform/chrome/chromeos_laptop.c
index a2cdbfbaeae6..7bedd82dd3a5 100644
--- a/drivers/platform/chrome/chromeos_laptop.c
+++ b/drivers/platform/chrome/chromeos_laptop.c
@@ -749,10 +749,9 @@ chromeos_laptop_prepare_i2c_peripherals(struct chromeos_laptop *cros_laptop,
 	if (!src->num_i2c_peripherals)
 		return 0;
 
-	i2c_peripherals = kmemdup(src->i2c_peripherals,
-					      src->num_i2c_peripherals *
-					  sizeof(*src->i2c_peripherals),
-					  GFP_KERNEL);
+	i2c_peripherals =
+		kmemdup_array(src->i2c_peripherals, src->num_i2c_peripherals,
+			      sizeof(*src->i2c_peripherals), GFP_KERNEL);
 	if (!i2c_peripherals)
 		return -ENOMEM;
 
-- 
2.34.1
Re: [PATCH v1] platform/chrome: chromeos_laptop: Use kmemdup_array instead of kmemdup for multiple allocation
Posted by Christophe JAILLET 1 year, 5 months ago
Le 21/08/2024 à 10:41, Yu Jiaoliang a écrit :
> Let the kememdup_array() take care about multiplication and possible
> overflows.
> 
> Signed-off-by: Yu Jiaoliang <yujiaoliang@vivo.com>
> ---
>   drivers/platform/chrome/chromeos_laptop.c | 7 +++----
>   1 file changed, 3 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/platform/chrome/chromeos_laptop.c b/drivers/platform/chrome/chromeos_laptop.c
> index a2cdbfbaeae6..7bedd82dd3a5 100644
> --- a/drivers/platform/chrome/chromeos_laptop.c
> +++ b/drivers/platform/chrome/chromeos_laptop.c
> @@ -749,10 +749,9 @@ chromeos_laptop_prepare_i2c_peripherals(struct chromeos_laptop *cros_laptop,
>   	if (!src->num_i2c_peripherals)
>   		return 0;
>   
> -	i2c_peripherals = kmemdup(src->i2c_peripherals,
> -					      src->num_i2c_peripherals *
> -					  sizeof(*src->i2c_peripherals),
> -					  GFP_KERNEL);
> +	i2c_peripherals =
> +		kmemdup_array(src->i2c_peripherals, src->num_i2c_peripherals,
> +			      sizeof(*src->i2c_peripherals), GFP_KERNEL);
>   	if (!i2c_peripherals)
>   		return -ENOMEM;
>   

Nitpick: sizeof(*i2c_peripherals) would also work and is slightly less 
verbose.

CJ