Skip to content

Commit

Permalink
wlcore: fix some failure cases in wlcore_probe()
Browse files Browse the repository at this point in the history
We need to release the IRQ if hw_info() or identify_chip() fails.  And
we need unregister the HW with mac80211 if there are any failures
after it's registered.

Signed-off-by: Luciano Coelho <coelho@ti.com>
  • Loading branch information
Luciano Coelho committed Jun 26, 2012
1 parent e59bec1 commit 8b425e6
Showing 1 changed file with 6 additions and 3 deletions.
9 changes: 6 additions & 3 deletions drivers/net/wireless/ti/wlcore/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -5520,12 +5520,12 @@ int __devinit wlcore_probe(struct wl1271 *wl, struct platform_device *pdev)
ret = wl12xx_get_hw_info(wl);
if (ret < 0) {
wl1271_error("couldn't get hw info");
goto out;
goto out_irq;
}

ret = wl->ops->identify_chip(wl);
if (ret < 0)
goto out;
goto out_irq;

ret = wl1271_init_ieee80211(wl);
if (ret)
Expand All @@ -5539,7 +5539,7 @@ int __devinit wlcore_probe(struct wl1271 *wl, struct platform_device *pdev)
ret = device_create_file(wl->dev, &dev_attr_bt_coex_state);
if (ret < 0) {
wl1271_error("failed to create sysfs file bt_coex_state");
goto out_irq;
goto out_unreg;
}

/* Create sysfs file to get HW PG version */
Expand All @@ -5564,6 +5564,9 @@ int __devinit wlcore_probe(struct wl1271 *wl, struct platform_device *pdev)
out_bt_coex_state:
device_remove_file(wl->dev, &dev_attr_bt_coex_state);

out_unreg:
wl1271_unregister_hw(wl);

out_irq:
free_irq(wl->irq, wl);

Expand Down

0 comments on commit 8b425e6

Please sign in to comment.