]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
pinctrl: canaan: k230: Fix order of DT parse and pinctrl register
authorZe Huang <huangze@whut.edu.cn>
Mon, 23 Jun 2025 16:11:14 +0000 (00:11 +0800)
committerLinus Walleij <linus.walleij@linaro.org>
Tue, 24 Jun 2025 19:36:15 +0000 (21:36 +0200)
Move DT parse before pinctrl register. This ensures that device tree
parsing is done before calling devm_pinctrl_register() to prevent using
uninitialized pin resources.

Fixes: 545887eab6f6 ("pinctrl: canaan: Add support for k230 SoC")
Reported-by: Yao Zi <ziyao@disroot.org>
Signed-off-by: Ze Huang <huangze@whut.edu.cn>
Link: https://lore.kernel.org/20250624-k230-return-check-v1-2-6b4fc5ba0c41@whut.edu.cn
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/pinctrl-k230.c

index 4976308e62372c744738dd8372e73b2494e38e0b..d716f23d837f7a70993a75346561ef0b1e07c3eb 100644 (file)
@@ -590,6 +590,7 @@ static int k230_pinctrl_probe(struct platform_device *pdev)
        struct device *dev = &pdev->dev;
        struct k230_pinctrl *info;
        struct pinctrl_desc *pctl;
+       int ret;
 
        info = devm_kzalloc(dev, sizeof(*info), GFP_KERNEL);
        if (!info)
@@ -615,13 +616,15 @@ static int k230_pinctrl_probe(struct platform_device *pdev)
                return dev_err_probe(dev, PTR_ERR(info->regmap_base),
                                     "failed to init regmap\n");
 
+       ret = k230_pinctrl_parse_dt(pdev, info);
+       if (ret)
+               return ret;
+
        info->pctl_dev = devm_pinctrl_register(dev, pctl, info);
        if (IS_ERR(info->pctl_dev))
                return dev_err_probe(dev, PTR_ERR(info->pctl_dev),
                                     "devm_pinctrl_register failed\n");
 
-       k230_pinctrl_parse_dt(pdev, info);
-
        return 0;
 }