hwspinlock: stm32: Use struct_size() helper in devm_kzalloc()
Subsystems (2)
PATCH 1/1 hwspinlock: stm32: Use struct_size() helper in devm_kzalloc()
Make use of the struct_size() helper instead of an open-coded version, in order to avoid any potential type mistakes or integer overflows that, in the worst scenario, could lead to heap overflows.
Also, address the following sparse warnings:drivers/hwspinlock/stm32_hwspinlock.c:84:32: warning: using sizeof on a flexible structure
--- drivers/hwspinlock/stm32_hwspinlock.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
drivers/hwspinlock/stm32_hwspinlock.c +2 -3
@@ -73,15 +73,14 @@ static int stm32_hwspinlock_probe(struct platform_device *pdev)struct device *dev = &pdev->dev;struct stm32_hwspinlock *hw;void __iomem *io_base; -size_t array_size;int i, ret; io_base =devm_platform_ioremap_resource (pdev,0 );if (IS_ERR (io_base))return PTR_ERR (io_base); - array_size =STM32_MUTEX_NUM_LOCKS *sizeof (struct hwspinlock ); - hw =devm_kzalloc (dev,sizeof (*hw) + array_size,GFP_KERNEL ); + hw =devm_kzalloc (dev,struct_size (hw, bank.lock,STM32_MUTEX_NUM_LOCKS ), +GFP_KERNEL );if (!hw)return -ENOMEM ;
Signature · 7 lines
2.27.0 _______________________________________________ linux-arm-kernel mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Quoted 10 lines · Gustavo A. R. Silva
Make use of the
struct_size()helper instead of an open-coded version, in order to avoid any potential type mistakes or integer overflows that, in the worst scenario, could lead to heap overflows.Also, address the following sparse warnings:
drivers/hwspinlock/stm32_hwspinlock.c:84:32: warning: using sizeof on a flexible structure
LGTM.
Quoted 29 lines
--- drivers/hwspinlock/stm32_hwspinlock.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)drivers/hwspinlock/stm32_hwspinlock.c +2
-4@@ -73,15 +73,14 @@ static int stm32_hwspinlock_probe(struct platform_device *pdev)struct device *dev = &pdev->dev;struct stm32_hwspinlock *hw;void __iomem *io_base; -size_t array_size;int i, ret; io_base =devm_platform_ioremap_resource (pdev,0 );if (IS_ERR (io_base))return PTR_ERR (io_base); - array_size =STM32_MUTEX_NUM_LOCKS *sizeof (struct hwspinlock ); - hw =devm_kzalloc (dev,sizeof (*hw) + array_size,GFP_KERNEL ); + hw =devm_kzalloc (dev,struct_size (hw, bank.lock,STM32_MUTEX_NUM_LOCKS ), +GFP_KERNEL );if (!hw)return -ENOMEM ; --2.27.0
Signature · 1 line
Baolin Wang
Hi Gustavo,
Thank you for the patch.
I am fine with it with a nit picking comment regarding the non-mandatory 80 characters line break [1].
BR
Fabien
[1] https://lkml.org/lkml/2020/5/29/1038
Quoted 26 lines · Gustavo A. R. Silva
Make use of the
struct_size()helper instead of an open-coded version, in order to avoid any potential type mistakes or integer overflows that, in the worst scenario, could lead to heap overflows.Also, address the following sparse warnings:
drivers/hwspinlock/stm32_hwspinlock.c:84:32: warning: using sizeof on a flexible structure--- drivers/hwspinlock/stm32_hwspinlock.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)drivers/hwspinlock/stm32_hwspinlock.c +0
-1@@ -73,15 +73,14 @@ static int stm32_hwspinlock_probe(struct platform_device *pdev)struct device *dev = &pdev->dev;struct stm32_hwspinlock *hw;void __iomem *io_base; -size_t array_size;int i, ret;
drivers/hwspinlock/stm32_hwspinlock.c static int stm32_hwspinlock_probe(struct · line 85
Quoted 10 lines
drivers/hwspinlock/stm32_hwspinlock.c +2
-2io_base =devm_platform_ioremap_resource (pdev,0 );if (IS_ERR (io_base))return PTR_ERR (io_base); - array_size =STM32_MUTEX_NUM_LOCKS *sizeof (struct hwspinlock ); - hw =devm_kzalloc (dev,sizeof (*hw) + array_size,GFP_KERNEL ); + hw =devm_kzalloc (dev,struct_size (hw, bank.lock,STM32_MUTEX_NUM_LOCKS ), +GFP_KERNEL );
No need from line break here.
Quoted 4 lines
drivers/hwspinlock/stm32_hwspinlock.c +0
-0if (!hw)return
-ENOMEM;