Flexible arrays should use __counted_by() to be able to do
runtime checks that the array does not go out of range.

Cc: Rosen Penev <[email protected]>
Fixes: 87182ef0bf93 ("pinctrl: starfive: jh7110: use struct_size")
Signed-off-by: Linus Walleij <[email protected]>
---
 drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c | 1 +
 drivers/pinctrl/starfive/pinctrl-starfive-jh7110.h | 3 ++-
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c 
b/drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
index 3572e8edd9f3..3fb9aa8ddf07 100644
--- a/drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
+++ b/drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
@@ -865,6 +865,7 @@ int jh7110_pinctrl_probe(struct platform_device *pdev)
 #endif
        if (!sfp)
                return -ENOMEM;
+       sfp->num_saved_regs = info->nsaved_regs;
 
        sfp->base = devm_platform_ioremap_resource(pdev, 0);
        if (IS_ERR(sfp->base))
diff --git a/drivers/pinctrl/starfive/pinctrl-starfive-jh7110.h 
b/drivers/pinctrl/starfive/pinctrl-starfive-jh7110.h
index 188fc9d96269..12568be28527 100644
--- a/drivers/pinctrl/starfive/pinctrl-starfive-jh7110.h
+++ b/drivers/pinctrl/starfive/pinctrl-starfive-jh7110.h
@@ -21,7 +21,8 @@ struct jh7110_pinctrl {
        /* register read/write mutex */
        struct mutex mutex;
        const struct jh7110_pinctrl_soc_info *info;
-       u32 saved_regs[];
+       unsigned int num_saved_regs;
+       u32 saved_regs[] __counted_by(num_saved_regs);
 };
 
 struct jh7110_gpio_irq_reg {

-- 
2.54.0


Reply via email to