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 <[email protected]> Reported-by: Pali Rohár <[email protected]> --- 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 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

