All of lore.kernel.org
 help / color / mirror / Atom feed
From: Steve Twiss <stwiss.opensource@diasemi.com>
To: Liam Girdwood <lgirdwood@gmail.com>, Mark Brown <broonie@kernel.org>
Cc: Support Opensource <support.opensource@diasemi.com>,
	LKML <linux-kernel@vger.kernel.org>
Subject: [PATCH 07/13] regulator: ltc3676: Fix notifier mutex lock warning
Date: Tue, 26 Feb 2019 15:38:56 +0000	[thread overview]
Message-ID: <62744c91911e8b7f9b5dadc1bbc278f69c499330.1551808797.git.stwiss.opensource@diasemi.com> (raw)
In-Reply-To: <cover.1551808797.git.stwiss.opensource@diasemi.com>

The mutex for the regulator_dev must be controlled by the caller of
the regulator_notifier_call_chain(), as described in the comment
for that function.

Failure to mutex lock and unlock surrounding the notifier call results
in a kernel WARN_ON_ONCE() which will dump a backtrace for the
regulator_notifier_call_chain() when that function call is first made.
The mutex can be controlled using the regulator_lock/unlock() API.

Fixes: 37b918a034fe ("regulator: Add LTC3676 support")
Suggested-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com>
Signed-off-by: Steve Twiss <stwiss.opensource@diasemi.com>
---
 drivers/regulator/ltc3676.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/regulator/ltc3676.c b/drivers/regulator/ltc3676.c
index 71fd0f2..cd0f112 100644
--- a/drivers/regulator/ltc3676.c
+++ b/drivers/regulator/ltc3676.c
@@ -338,17 +338,23 @@ static irqreturn_t ltc3676_isr(int irq, void *dev_id)
 	if (irqstat & LTC3676_IRQSTAT_THERMAL_WARN) {
 		dev_warn(dev, "Over-temperature Warning\n");
 		event = REGULATOR_EVENT_OVER_TEMP;
-		for (i = 0; i < LTC3676_NUM_REGULATORS; i++)
+		for (i = 0; i < LTC3676_NUM_REGULATORS; i++) {
+			regulator_lock(ltc3676->regulators[i]);
 			regulator_notifier_call_chain(ltc3676->regulators[i],
 						      event, NULL);
+			regulator_unlock(ltc3676->regulators[i]);
+		}
 	}
 
 	if (irqstat & LTC3676_IRQSTAT_UNDERVOLT_WARN) {
 		dev_info(dev, "Undervoltage Warning\n");
 		event = REGULATOR_EVENT_UNDER_VOLTAGE;
-		for (i = 0; i < LTC3676_NUM_REGULATORS; i++)
+		for (i = 0; i < LTC3676_NUM_REGULATORS; i++) {
+			regulator_lock(ltc3676->regulators[i]);
 			regulator_notifier_call_chain(ltc3676->regulators[i],
 						      event, NULL);
+			regulator_unlock(ltc3676->regulators[i]);
+		}
 	}
 
 	/* Clear warning condition */
-- 
1.9.3


  parent reply	other threads:[~2019-03-05 18:08 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-05 17:59 [PATCH 00/13] Fix backtrace warnings from bad notifier chain calls Steve Twiss
2019-02-26 14:59 ` [PATCH 01/13] regulator: da9055: Fix notifier mutex lock warning Steve Twiss
2019-02-26 15:19 ` [PATCH 02/13] regulator: da9062: " Steve Twiss
2019-02-26 15:23 ` [PATCH 03/13] regulator: da9063: " Steve Twiss
2019-02-26 15:27 ` [PATCH 04/13] regulator: da9211: " Steve Twiss
2019-02-26 15:32 ` [PATCH 05/13] regulator: lp8755: " Steve Twiss
2019-02-26 15:35 ` [PATCH 06/13] regulator: ltc3589: " Steve Twiss
2019-02-26 15:38 ` Steve Twiss [this message]
2019-02-26 15:42 ` [PATCH 08/13] regulator: pv88060: " Steve Twiss
2019-02-26 15:44 ` [PATCH 09/13] regulator: pv88080: " Steve Twiss
2019-02-26 15:46 ` [PATCH 10/13] regulator: pv88090: " Steve Twiss
2019-02-26 15:48 ` [PATCH 11/13] regulator: wm831x: " Steve Twiss
2019-03-06  9:27   ` Charles Keepax
2019-02-26 15:51 ` [PATCH 12/13] regulator: wm831x isink: " Steve Twiss
2019-03-06  9:28   ` Charles Keepax
2019-02-26 15:54 ` [PATCH 13/13] regulator: wm831x ldo: " Steve Twiss
2019-03-06  9:28   ` Charles Keepax

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=62744c91911e8b7f9b5dadc1bbc278f69c499330.1551808797.git.stwiss.opensource@diasemi.com \
    --to=stwiss.opensource@diasemi.com \
    --cc=broonie@kernel.org \
    --cc=lgirdwood@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=support.opensource@diasemi.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.