Subject: [PATCH 1/2] regulator: Remove possible deadlock from regulator_enable

From: [email-masked] (Mark Brown)
Date: Mon, 28 Mar 2011 19:11:51 +0100

On Mon, Mar 28, 2011 at 08:34:41AM -0700, David Collins wrote:

Review curtailed by me having to dash off but one comment...

> -/* locks held by regulator_enable() */
> +/* Locks are *not* held by regulator_enable(). */
>  static int _regulator_enable(struct regulator_dev *rdev)
>  {
> -	int ret, delay;
> +	struct regulator_dev *supply_rdev = NULL;
> +	int ret = 0, delay;
>  
> +	mutex_lock(&rdev->mutex);

This is going to be terribly confusing - the _ versions of the functions
all by convention rely on their callers taking the mutex, allowing them
to be safely used from internal APIs.