Messages in this thread Patch in this message | | | From | Krzysztof Kozlowski <> | Subject | [RFT/RFC] power_supply: bq2415x_charger: Initialize workqueue before scheduling it | Date | Tue, 14 Jul 2015 09:34:13 +0900 |
| |
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
| |