From patchwork Fri Jan 21 02:59:28 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sujith Manoharan X-Patchwork-Id: 493571 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id p0L30GsM004270 for ; Fri, 21 Jan 2011 03:00:16 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751588Ab1AUDAP (ORCPT ); Thu, 20 Jan 2011 22:00:15 -0500 Received: from mail-pz0-f46.google.com ([209.85.210.46]:44780 "EHLO mail-pz0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751092Ab1AUDAO (ORCPT ); Thu, 20 Jan 2011 22:00:14 -0500 Received: by pzk35 with SMTP id 35so218028pzk.19 for ; Thu, 20 Jan 2011 19:00:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:from:mime-version:content-type :content-transfer-encoding:message-id:date:to:x-mailer:cc:subject; bh=EILnz4bauQ94iLsRKDmqXWNKOA9hT5WTLfWBaa+RX/s=; b=MIj9GBKQp72ai9uTDojHP2NzDj5LgRdNd2MCcGhN8Bmkc317eKAK75Ph0bVRQDK2re 6EFyIa7nWHPRIcHLqKk/Sfg3zqrlmmPYcQb5scFXld1G4K5hAslYCIG9XZmpodT3NmRG 6rO/e1IWTla8LDOK939TJJZpWc5aG1Cv2ddUU= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:mime-version:content-type:content-transfer-encoding:message-id :date:to:x-mailer:cc:subject; b=Ic4aBezpW2CHr9cP3AdUnxxko5ibqAu8qliK47HcD0luN+U/PrPWpMjYbkaumhTvSs iHLWWqhDjC1GmD+/I28c05vWG40V3BZryOkzt2h3Jue7dwcg8i2MOhxPeRG+UUFwQrLM 3TJSE77qdppJ47MCfBhAg8SMsed5w88PGYIgI= Received: by 10.142.217.14 with SMTP id p14mr84181wfg.56.1295578813898; Thu, 20 Jan 2011 19:00:13 -0800 (PST) Received: from bodhi ([117.205.82.212]) by mx.google.com with ESMTPS id q13sm11986665wfc.17.2011.01.20.19.00.10 (version=TLSv1/SSLv3 cipher=RC4-MD5); Thu, 20 Jan 2011 19:00:13 -0800 (PST) From: Sujith MIME-Version: 1.0 Message-ID: <19768.63120.476359.846887@gargle.gargle.HOWL> Date: Fri, 21 Jan 2011 08:29:28 +0530 To: linux-wireless@vger.kernel.org X-Mailer: VM 8.1.1 under 23.2.1 (x86_64-unknown-linux-gnu) CC: ath9k-devel@venema.h4ckr.net Subject: [RFC/WIP 03/33] ath9k_htc: Fix error handling in add_interface Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter1.kernel.org [140.211.167.41]); Fri, 21 Jan 2011 03:00:17 +0000 (UTC) diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_main.c b/drivers/net/wireless/ath/ath9k/htc_drv_main.c index c960330..b3b33ff 100644 --- a/drivers/net/wireless/ath/ath9k/htc_drv_main.c +++ b/drivers/net/wireless/ath/ath9k/htc_drv_main.c @@ -1138,7 +1138,8 @@ static int ath9k_htc_add_interface(struct ieee80211_hw *hw, if (priv->nvifs >= ATH9K_HTC_MAX_VIF) { ret = -ENOBUFS; - goto out; + mutex_unlock(&priv->mutex); + return ret; } ath9k_htc_ps_wakeup(priv); @@ -1166,18 +1167,19 @@ static int ath9k_htc_add_interface(struct ieee80211_hw *hw, if (ret) goto out; - priv->nvifs++; - /* * We need a node in target to tx mgmt frames * before association. */ ret = ath9k_htc_add_station(priv, vif, NULL); - if (ret) + if (ret) { + WMI_CMD_BUF(WMI_VAP_REMOVE_CMDID, &hvif); goto out; + } priv->ah->opmode = vif->type; priv->vif_slot |= (1 << avp->index); + priv->nvifs++; priv->vif = vif; ath_dbg(common, ATH_DBG_CONFIG,