err = iwl_trans_start_hw(priv->trans);
        if (err)
-               goto out_free_hw;
+               goto out_leave_trans;
 
        /* Read the EEPROM */
        err = iwl_read_eeprom(priv->trans, &priv->eeprom_blob,
                              &priv->eeprom_blob_size);
        if (err) {
                IWL_ERR(priv, "Unable to init EEPROM\n");
-               goto out_free_hw;
+               goto out_leave_trans;
        }
 
        /* Reset chip to save power until we load uCode during "up". */
        kfree(priv->eeprom_blob);
 out_free_eeprom:
        kfree(priv->nvm_data);
+out_leave_trans:
+       iwl_trans_op_mode_leave(priv->trans);
 out_free_hw:
        ieee80211_free_hw(priv->hw);
 out: