]> git.baikalelectronics.ru Git - kernel.git/commitdiff
soc: sunxi: sram: Fix probe function ordering issues
authorSamuel Holland <samuel@sholland.org>
Mon, 15 Aug 2022 04:12:42 +0000 (23:12 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 5 Oct 2022 08:37:44 +0000 (10:37 +0200)
[ Upstream commit db0aa12442107fbe59c7224cd86e7604d4f1cc59 ]

Errors from debugfs are intended to be non-fatal, and should not prevent
the driver from probing.

Since debugfs file creation is treated as infallible, move it below the
parts of the probe function that can fail. This prevents an error
elsewhere in the probe function from causing the file to leak. Do the
same for the call to of_platform_populate().

Finally, checkpatch suggests an octal literal for the file permissions.

Fixes: 35c552b6fb96 ("drivers: soc: sunxi: Introduce SoC driver to map SRAMs")
Fixes: 9ec8c91d0de0 ("soc: sunxi: export a regmap for EMAC clock reg on A64")
Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Signed-off-by: Samuel Holland <samuel@sholland.org>
Tested-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Link: https://lore.kernel.org/r/20220815041248.53268-6-samuel@sholland.org
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/soc/sunxi/sunxi_sram.c

index 3a350828965e8b2fb4743d512792d36f9aa55dbd..08fe49b766bd2055769b1cb381c838230afeef61 100644 (file)
@@ -321,9 +321,9 @@ static struct regmap_config sunxi_sram_emac_clock_regmap = {
 
 static int __init sunxi_sram_probe(struct platform_device *pdev)
 {
-       struct dentry *d;
        struct regmap *emac_clock;
        const struct sunxi_sramc_variant *variant;
+       struct device *dev = &pdev->dev;
 
        sram_dev = &pdev->dev;
 
@@ -335,13 +335,6 @@ static int __init sunxi_sram_probe(struct platform_device *pdev)
        if (IS_ERR(base))
                return PTR_ERR(base);
 
-       of_platform_populate(pdev->dev.of_node, NULL, NULL, &pdev->dev);
-
-       d = debugfs_create_file("sram", S_IRUGO, NULL, NULL,
-                               &sunxi_sram_fops);
-       if (!d)
-               return -ENOMEM;
-
        if (variant->has_emac_clock) {
                emac_clock = devm_regmap_init_mmio(&pdev->dev, base,
                                                   &sunxi_sram_emac_clock_regmap);
@@ -350,6 +343,10 @@ static int __init sunxi_sram_probe(struct platform_device *pdev)
                        return PTR_ERR(emac_clock);
        }
 
+       of_platform_populate(dev->of_node, NULL, NULL, dev);
+
+       debugfs_create_file("sram", 0444, NULL, NULL, &sunxi_sram_fops);
+
        return 0;
 }