diff options
Diffstat (limited to 'drivers/regulator/core.c')
| -rw-r--r-- | drivers/regulator/core.c | 4 | 
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index e225711bb8bc..9c48fb32f660 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c @@ -1488,7 +1488,7 @@ struct regulator *regulator_get_optional(struct device *dev, const char *id)  }  EXPORT_SYMBOL_GPL(regulator_get_optional); -/* Locks held by regulator_put() */ +/* regulator_list_mutex lock held by regulator_put() */  static void _regulator_put(struct regulator *regulator)  {  	struct regulator_dev *rdev; @@ -1503,12 +1503,14 @@ static void _regulator_put(struct regulator *regulator)  	/* remove any sysfs entries */  	if (regulator->dev)  		sysfs_remove_link(&rdev->dev.kobj, regulator->supply_name); +	mutex_lock(&rdev->mutex);  	kfree(regulator->supply_name);  	list_del(®ulator->list);  	kfree(regulator);  	rdev->open_count--;  	rdev->exclusive = 0; +	mutex_unlock(&rdev->mutex);  	module_put(rdev->owner);  }  | 
