In the call chain below
ath9k_hif_usb_firmware_cb()
ath9k_htc_hw_alloc()
ath9k_hif_usb_dev_init()
ret = ath9k_htc_hw_init()
ath9k_htc_probe_device()
htc_handle->drv_priv = priv;
ret = ath9k_htc_wait_for_target(priv);
if (ret)
goto err_free;
if (ret)
goto err_htc_hw_init;
err_free:
ieee80211_free_hw(hw);
err_htc_hw_init:
ath9k_hif_usb_dev_deinit(hif_dev);
ath9k_hif_usb_dealloc_urbs()
err_dev_init:
ath9k_htc_hw_free(hif_dev->htc_handle);
err_dev_alloc:
release_firmware(fw);
err_fw:
ath9k_hif_usb_firmware_fail(hif_dev);
hw should survive deallocating urbs, and changes should be added instead to
the rollback in ath9k_htc_probe_device() by deferring cleanup of hw to its
callsite in addition to urbs.
Attachment:
OpenPGP_signature
Description: OpenPGP digital signature