Commit 6f4f59c6 authored by Roman Tereshonkov's avatar Roman Tereshonkov Committed by Tony Lindgren

The fix prevents kernel crash caused by twl4030 power button malfunction.

If i2c connection is broken the twl4030 power button driver is unregistered.
The function input_free_device has to be called only when
input_register_device failed. Otherwise input_unregister_device is used.
Signed-off-by: default avatarRoman Tereshonkov <roman.tereshonkov@nokia.com>
Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
parent 5728b4a3
......@@ -95,8 +95,10 @@ static int __init twl4030_pwrbutton_init(void)
powerbutton_dev->name = "triton2-pwrbutton";
err = input_register_device(powerbutton_dev);
if (err)
goto free_input_dev;
if (err) {
input_free_device(powerbutton_dev);
goto free_irq_and_out;
}
err = twl4030_i2c_read_u8(TWL4030_MODULE_INT, &value, PWR_IMR1);
if (err) {
......@@ -122,7 +124,7 @@ static int __init twl4030_pwrbutton_init(void)
}
err = twl4030_i2c_write_u8(TWL4030_MODULE_INT,
value | PWR_PWRON_BOTH , PWR_EDR1);
value | PWR_PWRON_BOTH, PWR_EDR1);
if (err) {
printk(KERN_WARNING "I2C error %d while writing TWL4030"
......@@ -136,7 +138,7 @@ static int __init twl4030_pwrbutton_init(void)
free_input_dev:
input_free_device(powerbutton_dev);
input_unregister_device(powerbutton_dev);
free_irq_and_out:
free_irq(TWL4030_PWRIRQ_PWRBTN, NULL);
out:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment