From owner-svn-src-head@FreeBSD.ORG Wed Jul 31 06:05:35 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 77BAAD0E; Wed, 31 Jul 2013 06:05:35 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 6462F2B57; Wed, 31 Jul 2013 06:05:35 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r6V65ZJh032079; Wed, 31 Jul 2013 06:05:35 GMT (envelope-from rpaulo@svn.freebsd.org) Received: (from rpaulo@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r6V65ZEk032078; Wed, 31 Jul 2013 06:05:35 GMT (envelope-from rpaulo@svn.freebsd.org) Message-Id: <201307310605.r6V65ZEk032078@svn.freebsd.org> From: Rui Paulo Date: Wed, 31 Jul 2013 06:05:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r253831 - head/sys/dev/usb/wlan X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 31 Jul 2013 06:05:35 -0000 Author: rpaulo Date: Wed Jul 31 06:05:34 2013 New Revision: 253831 URL: http://svnweb.freebsd.org/changeset/base/253831 Log: Cleanup the allocations when the attachment fails. Modified: head/sys/dev/usb/wlan/if_rsu.c Modified: head/sys/dev/usb/wlan/if_rsu.c ============================================================================== --- head/sys/dev/usb/wlan/if_rsu.c Wed Jul 31 05:52:03 2013 (r253830) +++ head/sys/dev/usb/wlan/if_rsu.c Wed Jul 31 06:05:34 2013 (r253831) @@ -323,7 +323,7 @@ rsu_attach(device_t self) device_printf(sc->sc_dev, "could not allocate USB transfers, err=%s\n", usbd_errstr(error)); - goto detach; + goto fail_usb; } RSU_LOCK(sc); /* Read chip revision. */ @@ -333,7 +333,7 @@ rsu_attach(device_t self) error = rsu_read_rom(sc); if (error != 0) { device_printf(self, "could not read ROM\n"); - goto detach; + goto fail_rom; } RSU_UNLOCK(sc); IEEE80211_ADDR_COPY(sc->sc_bssid, &sc->rom[0x12]); @@ -341,7 +341,7 @@ rsu_attach(device_t self) ifp = sc->sc_ifp = if_alloc(IFT_IEEE80211); if (ifp == NULL) { device_printf(self, "cannot allocate interface\n"); - goto detach; + goto fail_ifalloc; } ic = ifp->if_l2com; ifp->if_softc = sc; @@ -407,8 +407,11 @@ rsu_attach(device_t self) return (0); -detach: - rsu_detach(self); +fail_ifalloc: +fail_rom: + usbd_transfer_unsetup(sc->sc_xfer, RSU_N_TRANSFER); +fail_usb: + mtx_destroy(&sc->sc_mtx); return (ENXIO); }