From 87182ef0bf93c283b2ab350fa4d1e0b098eb1324 Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Fri, 24 Apr 2026 18:40:29 -0700 Subject: [PATCH] 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 --- drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c | 12 +++++------- drivers/pinctrl/starfive/pinctrl-starfive-jh7110.h | 2 +- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c b/drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c index e44480e71ea8..3572e8edd9f3 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 2da2d6858008..188fc9d96269 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 {