From owner-svn-src-all@FreeBSD.ORG Sat Apr 16 11:11:22 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id ED6F4106564A; Sat, 16 Apr 2011 11:11:22 +0000 (UTC) (envelope-from bschmidt@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id DD0768FC08; Sat, 16 Apr 2011 11:11:22 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p3GBBMxq002941; Sat, 16 Apr 2011 11:11:22 GMT (envelope-from bschmidt@svn.freebsd.org) Received: (from bschmidt@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p3GBBMod002939; Sat, 16 Apr 2011 11:11:22 GMT (envelope-from bschmidt@svn.freebsd.org) Message-Id: <201104161111.p3GBBMod002939@svn.freebsd.org> From: Bernhard Schmidt Date: Sat, 16 Apr 2011 11:11:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r220710 - head/sys/dev/iwn X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 16 Apr 2011 11:11:23 -0000 Author: bschmidt Date: Sat Apr 16 11:11:22 2011 New Revision: 220710 URL: http://svn.freebsd.org/changeset/base/220710 Log: Prevent double-free, also use the same error codes as OpenBSD. Modified: head/sys/dev/iwn/if_iwn.c Modified: head/sys/dev/iwn/if_iwn.c ============================================================================== --- head/sys/dev/iwn/if_iwn.c Sat Apr 16 11:06:09 2011 (r220709) +++ head/sys/dev/iwn/if_iwn.c Sat Apr 16 11:11:22 2011 (r220710) @@ -1294,7 +1294,7 @@ iwn_alloc_rx_ring(struct iwn_softc *sc, if (data->m == NULL) { device_printf(sc->sc_dev, "%s: could not allocate rx mbuf\n", __func__); - error = ENOMEM; + error = ENOBUFS; goto fail; } @@ -1305,8 +1305,6 @@ iwn_alloc_rx_ring(struct iwn_softc *sc, device_printf(sc->sc_dev, "%s: bus_dmamap_load failed, error %d\n", __func__, error); - m_freem(data->m); - error = ENOMEM; /* XXX unique code */ goto fail; } @@ -1361,6 +1359,7 @@ iwn_free_rx_ring(struct iwn_softc *sc, s BUS_DMASYNC_POSTREAD); bus_dmamap_unload(ring->data_dmat, data->map); m_freem(data->m); + data->m = NULL; } if (data->map != NULL) bus_dmamap_destroy(ring->data_dmat, data->map);