mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-08 13:44:01 +08:00
power: supply: axp20x_usb_power: Init work before enabling IRQs
The IRQ handler calls mod_delayed_work() on power->vbus_detect. However,
that work item is not initialized until after the IRQs are enabled. If
an IRQ is already pending when the driver is probed, the driver calls
mod_delayed_work() on an uninitialized work item, which causes an oops.
Fixes: bcfb7ae3f5
("power: supply: axp20x_usb_power: Only poll while offline")
Signed-off-by: Samuel Holland <samuel@sholland.org>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
This commit is contained in:
parent
a4bdea2004
commit
b5e8642ed9
@ -593,6 +593,7 @@ static int axp20x_usb_power_probe(struct platform_device *pdev)
|
||||
power->axp20x_id = axp_data->axp20x_id;
|
||||
power->regmap = axp20x->regmap;
|
||||
power->num_irqs = axp_data->num_irq_names;
|
||||
INIT_DELAYED_WORK(&power->vbus_detect, axp20x_usb_power_poll_vbus);
|
||||
|
||||
if (power->axp20x_id == AXP202_ID) {
|
||||
/* Enable vbus valid checking */
|
||||
@ -645,7 +646,6 @@ static int axp20x_usb_power_probe(struct platform_device *pdev)
|
||||
}
|
||||
}
|
||||
|
||||
INIT_DELAYED_WORK(&power->vbus_detect, axp20x_usb_power_poll_vbus);
|
||||
if (axp20x_usb_vbus_needs_polling(power))
|
||||
queue_delayed_work(system_power_efficient_wq, &power->vbus_detect, 0);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user