linux-pm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFT/RFC] power_supply: bq2415x_charger: Initialize workqueue before scheduling it
@ 2015-07-14  0:34 Krzysztof Kozlowski
  2015-07-14  7:18 ` Pali Rohár
  2015-07-25 21:49 ` Pali Rohár
  0 siblings, 2 replies; 5+ messages in thread
From: Krzysztof Kozlowski @ 2015-07-14  0:34 UTC (permalink / raw)
  To: Pali Rohár, Sebastian Reichel, Dmitry Eremin-Solenikov,
	David Woodhouse, linux-pm, linux-kernel
  Cc: Krzysztof Kozlowski

The driver during probe registers a power supply notifier
(with bq2415x_notifier_call() callback) and calls it manually right
after. The notifier callback function schedules driver's workqueue
(bq->work).

However the workqueue was initialized after these two events (after
registering power supply notifier and calling manually the callback).

When power supply core notified the driver (executing its
bq2415x_notifier_call() callback) the scheduled workqueue could be
still uninitialized.

Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Reported-by: Pali Rohár <pali.rohar@gmail.com>

---

I don't have the hardware, please test. Additionally I could not find
the commit which introduced the issue so I did not cc-stable.
---
 drivers/power/bq2415x_charger.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/power/bq2415x_charger.c b/drivers/power/bq2415x_charger.c
index e98dcb661cc9..527ed0f18796 100644
--- a/drivers/power/bq2415x_charger.c
+++ b/drivers/power/bq2415x_charger.c
@@ -1601,6 +1601,7 @@ static int bq2415x_probe(struct i2c_client *client,
 	bq->reported_mode = BQ2415X_MODE_OFF;
 	bq->autotimer = 0;
 	bq->automode = 0;
+	INIT_DELAYED_WORK(&bq->work, bq2415x_timer_work);
 
 	if (np || ACPI_HANDLE(bq->dev)) {
 		ret = device_property_read_u32(bq->dev,
@@ -1677,7 +1678,6 @@ static int bq2415x_probe(struct i2c_client *client,
 		dev_info(bq->dev, "automode not supported\n");
 	}
 
-	INIT_DELAYED_WORK(&bq->work, bq2415x_timer_work);
 	bq2415x_set_autotimer(bq, 1);
 
 	dev_info(bq->dev, "driver registered\n");
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2015-07-27 14:48 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-07-14  0:34 [RFT/RFC] power_supply: bq2415x_charger: Initialize workqueue before scheduling it Krzysztof Kozlowski
2015-07-14  7:18 ` Pali Rohár
2015-07-25 21:49 ` Pali Rohár
2015-07-27 14:22   ` Sebastian Reichel
2015-07-27 14:48     ` Pali Rohár

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).