diff --git a/net/rfkill/rfkill-bt.c b/net/rfkill/rfkill-bt.c index 58ad5b073809..85299bdf77eb 100644 --- a/net/rfkill/rfkill-bt.c +++ b/net/rfkill/rfkill-bt.c @@ -677,7 +677,7 @@ static int rfkill_rk_probe(struct platform_device *pdev) ret = rfkill_rk_setup_wake_irq(rfkill, 0); if (ret) - goto fail_gpio; + goto fail_setup_wake_irq; DBG("setup rfkill\n"); rfkill->rfkill_dev = rfkill_alloc(pdata->name, &pdev->dev, pdata->type, @@ -716,6 +716,8 @@ fail_alloc: remove_proc_entry("btwrite", sleep_dir); remove_proc_entry("lpm", sleep_dir); +fail_setup_wake_irq: + wake_lock_destroy(&rfkill->bt_irq_wl); fail_gpio: g_rfkill = NULL; @@ -755,6 +757,7 @@ static int rfkill_rk_remove(struct platform_device *pdev) if (gpio_is_valid(rfkill->pdata->poweron_gpio.io)) gpio_free(rfkill->pdata->poweron_gpio.io); clk_disable_unprepare(rfkill->pdata->ext_clk); + wake_lock_destroy(&rfkill->bt_irq_wl); g_rfkill = NULL; return 0;