Re: [PATCH v2] power: supply: bq27xxx: Fix kernel crash on IRQ handler register error
From: Andy Shevchenko <hidden>
Date: 2021-10-31 19:35:26
Also in:
linux-acpi, platform-driver-x86
On Sun, Oct 31, 2021 at 5:25 PM Hans de Goede [off-list ref] wrote:
When registering the IRQ handler fails, do not just return the error code, this will free the devm_kzalloc()-ed data struct while leaving the queued work queued and the registered power_supply registered with both of them now pointing to free-ed memory, resulting in various kernel crashes soon afterwards. Instead properly tear-down things on IRQ handler register errors.
FWIW, Reviewed-by: Andy Shevchenko <redacted>
quoted hunk ↗ jump to hunk
Fixes: 703df6c09795 ("power: bq27xxx_battery: Reorganize I2C into a module") Cc: Andrew F. Davis <redacted> Signed-off-by: Hans de Goede <redacted> --- Changes in v2: - Fix devm_kzalloc()-ed type in the commit message --- drivers/power/supply/bq27xxx_battery_i2c.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)diff --git a/drivers/power/supply/bq27xxx_battery_i2c.c b/drivers/power/supply/bq27xxx_battery_i2c.c index 46f078350fd3..cf38cbfe13e9 100644 --- a/drivers/power/supply/bq27xxx_battery_i2c.c +++ b/drivers/power/supply/bq27xxx_battery_i2c.c@@ -187,7 +187,8 @@ static int bq27xxx_battery_i2c_probe(struct i2c_client *client, dev_err(&client->dev, "Unable to register IRQ %d error %d\n", client->irq, ret); - return ret; + bq27xxx_battery_teardown(di); + goto err_failed; } } --2.31.1
-- With Best Regards, Andy Shevchenko