forked from Minki/linux
mfd: Fix max77693 irq leak and wrong kfree call
We need to call max77693_irq_exit() in max77693_i2c_probe error patch and max77693_i2c_remove. Current code already uses devm_kzalloc() to allocate memory for max77693. Thus we should not call kfree(max77693), otherwise we got double free. Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
This commit is contained in:
parent
8b7353d175
commit
ff2b7ac6f6
@ -154,7 +154,7 @@ static int max77693_i2c_probe(struct i2c_client *i2c,
|
||||
|
||||
ret = max77693_irq_init(max77693);
|
||||
if (ret < 0)
|
||||
goto err_mfd;
|
||||
goto err_irq;
|
||||
|
||||
pm_runtime_set_active(max77693->dev);
|
||||
|
||||
@ -168,11 +168,11 @@ static int max77693_i2c_probe(struct i2c_client *i2c,
|
||||
return ret;
|
||||
|
||||
err_mfd:
|
||||
max77693_irq_exit(max77693);
|
||||
err_irq:
|
||||
i2c_unregister_device(max77693->muic);
|
||||
i2c_unregister_device(max77693->haptic);
|
||||
err_regmap:
|
||||
kfree(max77693);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -181,6 +181,7 @@ static int max77693_i2c_remove(struct i2c_client *i2c)
|
||||
struct max77693_dev *max77693 = i2c_get_clientdata(i2c);
|
||||
|
||||
mfd_remove_devices(max77693->dev);
|
||||
max77693_irq_exit(max77693);
|
||||
i2c_unregister_device(max77693->muic);
|
||||
i2c_unregister_device(max77693->haptic);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user