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

From: Christophe JAILLET
Date: Wed Aug 21 2024 - 07:32:21 EST


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@xxxxxxxx>
---
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