Merge tag 'ipsec-2023-10-17' of git://git.kernel.org/pub/scm/linux/kernel/git/klasser...
[platform/kernel/linux-starfive.git] / drivers / regulator / core.c
index d8e1caa..3137e40 100644 (file)
@@ -5542,6 +5542,8 @@ regulator_register(struct device *dev,
                goto rinse;
        }
        device_initialize(&rdev->dev);
+       dev_set_drvdata(&rdev->dev, rdev);
+       rdev->dev.class = &regulator_class;
        spin_lock_init(&rdev->err_lock);
 
        /*
@@ -5603,11 +5605,9 @@ regulator_register(struct device *dev,
                rdev->supply_name = regulator_desc->supply_name;
 
        /* register with sysfs */
-       rdev->dev.class = &regulator_class;
        rdev->dev.parent = config->dev;
        dev_set_name(&rdev->dev, "regulator.%lu",
                    (unsigned long) atomic_inc_return(&regulator_no));
-       dev_set_drvdata(&rdev->dev, rdev);
 
        /* set regulator constraints */
        if (init_data)
@@ -5724,15 +5724,11 @@ wash:
        mutex_lock(&regulator_list_mutex);
        regulator_ena_gpio_free(rdev);
        mutex_unlock(&regulator_list_mutex);
-       put_device(&rdev->dev);
-       rdev = NULL;
 clean:
        if (dangling_of_gpiod)
                gpiod_put(config->ena_gpiod);
-       if (rdev && rdev->dev.of_node)
-               of_node_put(rdev->dev.of_node);
-       kfree(rdev);
        kfree(config);
+       put_device(&rdev->dev);
 rinse:
        if (dangling_cfg_gpiod)
                gpiod_put(cfg->ena_gpiod);