Skip to content

Commit

Permalink
mfd: Fix max77693 irq leak and wrong kfree call
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Axel Lin authored and Samuel Ortiz committed Jul 8, 2012
1 parent 8b7353d commit ff2b7ac
Showing 1 changed file with 4 additions and 3 deletions.
7 changes: 4 additions & 3 deletions drivers/mfd/max77693.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand All @@ -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;
}

Expand All @@ -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);

Expand Down

0 comments on commit ff2b7ac

Please sign in to comment.