]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
pinctrl: tegra: use flexible array member for array
authorRosen Penev <rosenp@gmail.com>
Sun, 15 Mar 2026 23:10:00 +0000 (16:10 -0700)
committerLinus Walleij <linusw@kernel.org>
Thu, 19 Mar 2026 13:04:15 +0000 (14:04 +0100)
Simplifies allocation slightly by removing a kcalloc call and using
struct_size.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
[linusw@kernel.org: Add in count variable and use __counted_by()]
Signed-off-by: Linus Walleij <linusw@kernel.org>
drivers/pinctrl/tegra/pinctrl-tegra.c
drivers/pinctrl/tegra/pinctrl-tegra.h

index 11ecbd6a9b2a14b80a5284898053a35363c3704c..bac2adeb5c63b1787e9189948bda5ef8fffbcff3 100644 (file)
@@ -832,18 +832,14 @@ int tegra_pinctrl_probe(struct platform_device *pdev,
        int fn, gn, gfn;
        unsigned long backup_regs_size = 0;
 
-       pmx = devm_kzalloc(&pdev->dev, sizeof(*pmx), GFP_KERNEL);
+       pmx = devm_kzalloc(&pdev->dev,
+                       struct_size(pmx, pingroup_configs, soc_data->ngroups), GFP_KERNEL);
        if (!pmx)
                return -ENOMEM;
 
        pmx->dev = &pdev->dev;
        pmx->soc = soc_data;
-
-       pmx->pingroup_configs = devm_kcalloc(&pdev->dev,
-                                            pmx->soc->ngroups, sizeof(*pmx->pingroup_configs),
-                                            GFP_KERNEL);
-       if (!pmx->pingroup_configs)
-               return -ENOMEM;
+       pmx->num_pingroup_configs = soc_data->ngroups;
 
        /*
         * Each mux group will appear in 4 functions' list of groups.
index bc7b70913b8937a9e0ac1d432bc8794a77417859..deb589cda31e0a39d09141a794a459fe3176e6a9 100644 (file)
@@ -25,8 +25,8 @@ struct tegra_pmx {
        int nbanks;
        void __iomem **regs;
        u32 *backup_regs;
-       /* Array of size soc->ngroups */
-       struct tegra_pingroup_config *pingroup_configs;
+       unsigned int num_pingroup_configs;
+       struct tegra_pingroup_config pingroup_configs[] __counted_by(num_pingroup_configs);
 };
 
 enum tegra_pinconf_param {