@@ -5167,16 +5167,16 @@ regulator_register(const struct regulator_desc *regulator_desc,
5167
5167
ret = - ENOMEM ;
5168
5168
goto rinse ;
5169
5169
}
5170
+ device_initialize (& rdev -> dev );
5170
5171
5171
5172
/*
5172
5173
* Duplicate the config so the driver could override it after
5173
5174
* parsing init data.
5174
5175
*/
5175
5176
config = kmemdup (cfg , sizeof (* cfg ), GFP_KERNEL );
5176
5177
if (config == NULL ) {
5177
- kfree (rdev );
5178
5178
ret = - ENOMEM ;
5179
- goto rinse ;
5179
+ goto clean ;
5180
5180
}
5181
5181
5182
5182
init_data = regulator_of_get_init_data (dev , regulator_desc , config ,
@@ -5188,10 +5188,8 @@ regulator_register(const struct regulator_desc *regulator_desc,
5188
5188
* from a gpio extender or something else.
5189
5189
*/
5190
5190
if (PTR_ERR (init_data ) == - EPROBE_DEFER ) {
5191
- kfree (config );
5192
- kfree (rdev );
5193
5191
ret = - EPROBE_DEFER ;
5194
- goto rinse ;
5192
+ goto clean ;
5195
5193
}
5196
5194
5197
5195
/*
@@ -5244,7 +5242,6 @@ regulator_register(const struct regulator_desc *regulator_desc,
5244
5242
}
5245
5243
5246
5244
/* register with sysfs */
5247
- device_initialize (& rdev -> dev );
5248
5245
rdev -> dev .class = & regulator_class ;
5249
5246
rdev -> dev .parent = dev ;
5250
5247
dev_set_name (& rdev -> dev , "regulator.%lu" ,
@@ -5322,13 +5319,11 @@ regulator_register(const struct regulator_desc *regulator_desc,
5322
5319
mutex_lock (& regulator_list_mutex );
5323
5320
regulator_ena_gpio_free (rdev );
5324
5321
mutex_unlock (& regulator_list_mutex );
5325
- put_device (& rdev -> dev );
5326
- rdev = NULL ;
5327
5322
clean :
5328
5323
if (dangling_of_gpiod )
5329
5324
gpiod_put (config -> ena_gpiod );
5330
- kfree (rdev );
5331
5325
kfree (config );
5326
+ put_device (& rdev -> dev );
5332
5327
rinse :
5333
5328
if (dangling_cfg_gpiod )
5334
5329
gpiod_put (cfg -> ena_gpiod );
0 commit comments