From: Rosen Penev Date: Sat, 25 Apr 2026 01:40:29 +0000 (-0700) Subject: pinctrl: starfive: jh7110: use struct_size X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=87182ef0bf93c283b2ab350fa4d1e0b098eb1324;p=thirdparty%2Fkernel%2Flinux.git pinctrl: starfive: jh7110: use struct_size Instead of an extra kcalloc, Use a flexible array member to combine allocations. Saves a pointer in the struct. Signed-off-by: Rosen Penev Acked-by: Hal Feng Signed-off-by: Linus Walleij --- diff --git a/drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c b/drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c index e44480e71ea8f..3572e8edd9f30 100644 --- a/drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c +++ b/drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c @@ -857,17 +857,15 @@ int jh7110_pinctrl_probe(struct platform_device *pdev) return -EINVAL; } +#if IS_ENABLED(CONFIG_PM_SLEEP) + sfp = devm_kzalloc(dev, struct_size(sfp, saved_regs, info->nsaved_regs), + GFP_KERNEL); +#else sfp = devm_kzalloc(dev, sizeof(*sfp), GFP_KERNEL); +#endif if (!sfp) return -ENOMEM; -#if IS_ENABLED(CONFIG_PM_SLEEP) - sfp->saved_regs = devm_kcalloc(dev, info->nsaved_regs, - sizeof(*sfp->saved_regs), GFP_KERNEL); - if (!sfp->saved_regs) - return -ENOMEM; -#endif - sfp->base = devm_platform_ioremap_resource(pdev, 0); if (IS_ERR(sfp->base)) return PTR_ERR(sfp->base); diff --git a/drivers/pinctrl/starfive/pinctrl-starfive-jh7110.h b/drivers/pinctrl/starfive/pinctrl-starfive-jh7110.h index 2da2d6858008c..188fc9d96269d 100644 --- a/drivers/pinctrl/starfive/pinctrl-starfive-jh7110.h +++ b/drivers/pinctrl/starfive/pinctrl-starfive-jh7110.h @@ -21,7 +21,7 @@ struct jh7110_pinctrl { /* register read/write mutex */ struct mutex mutex; const struct jh7110_pinctrl_soc_info *info; - u32 *saved_regs; + u32 saved_regs[]; }; struct jh7110_gpio_irq_reg {