]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
soc/tegra: fuse: Restore base on sysfs failure
authorThierry Reding <treding@nvidia.com>
Tue, 20 Aug 2019 13:53:44 +0000 (15:53 +0200)
committerThierry Reding <treding@nvidia.com>
Wed, 16 Oct 2019 12:33:13 +0000 (14:33 +0200)
Make sure to also restore the register base address on sysfs
registration failure.

Signed-off-by: Thierry Reding <treding@nvidia.com>
drivers/soc/tegra/fuse/fuse-tegra.c

index 58996c6ea767a0a484722fa3a55a905208490a87..db516a2a3807865b6cfede2c83ef788041631583 100644 (file)
@@ -146,20 +146,24 @@ static int tegra_fuse_probe(struct platform_device *pdev)
 
        if (fuse->soc->probe) {
                err = fuse->soc->probe(fuse);
-               if (err < 0) {
-                       fuse->base = base;
-                       return err;
-               }
+               if (err < 0)
+                       goto restore;
        }
 
        if (tegra_fuse_create_sysfs(&pdev->dev, fuse->soc->info->size,
-                                   fuse->soc->info))
-               return -ENODEV;
+                                   fuse->soc->info)) {
+               err = -ENODEV;
+               goto restore;
+       }
 
        /* release the early I/O memory mapping */
        iounmap(base);
 
        return 0;
+
+restore:
+       fuse->base = base;
+       return err;
 }
 
 static struct platform_driver tegra_fuse_driver = {