From nobody Sun Feb 22 18:08:10 2026 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4fJsRH0Hf1z6TWxr for ; Sun, 22 Feb 2026 18:08:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4fJsRG50Gzz40pr for ; Sun, 22 Feb 2026 18:08:10 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1771783690; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0x6qA/EZxv7HRj7V6yyHbSURxOGMR+08Ju0qYuAzkgg=; b=R/2QcE2WI0HXSpxNzfEi4+Ple0ISgr9VE2l5hJEsQNeZdD/h6xgt3kE/W8ZH2VswbgEgFv snqGkKvqeNYLJKtnqjIQetcBv3mSLuiHdEknI7ztE/gerEStcvG7OASxQqWhVw+9+xJT7t E4J+5EQFFTw4uPMdi5bFhZgpr1RvoPF6jWGo2/W0PlpW1myrrLYsVRRXTidgbdEM0TBSDz 67jeQKdRcMkRBuadk3EQ47kABacWQOvJ3gtZru5Jc0PFhB0B0gufW5psgVZRtkxprjXdTv BdWkRGvptzWkpSqo7A5XSNa23lg1KQdKG/QYd8dnPdhDF077LqNb2Xr64U4vVQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1771783690; a=rsa-sha256; cv=none; b=jrvjHMuVCyGzi4xafk5cjEWxUHdsvRmw5BQl54o9L10H5fAdfdByu3py9zS9ZyiV93XRxa 6tHFX+OrScGbX0JzF8YuexGVTRh7nQaYV94cSIeE/CLMNiRWNX7bxe8RYrRNq4dJdBLDcv rMreJaUxPXnA+WUuT+tv91lbCcnRuOjAslqTnBVR/aVILQlXQa7LHppXSFNZt9lp/Oratm HsqwQqROavc5IeMU67dQebNJ9qQibH2Da7GLN4urN0HuBWmJ7AvF95p9RXIe4wRzXlnPlt pPQ99fpZL0kPLzUzm9hPSRdX4I4YyXOLsZgm4Vq7rBfufY0DbpL0QkqQFvaE+w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1771783690; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0x6qA/EZxv7HRj7V6yyHbSURxOGMR+08Ju0qYuAzkgg=; b=vvygrXHye9AsRCNGwUt4TkL4twu1X7L3C0163xms9Jn7eRnDQrrVqo+gYRw9lQkic8bbxe WgPjFkxxpeLnBfgYyAySHyn2dGfL/NC0uJsyqXPNtigrtGPG+AhYSUPT/ksMVjrqRGkDiL BPz+KnmijXtsKtFBAKYJ+0eTt/paxVu5fCXLj9ILxC5L1KMlM70QX8C4UAOnSfT7dmJ5H3 f7xhE+eYatlccxY0HmeZFt2kAeYeXsMdemhyahCYF9CfuuRaCQr68fjgSqIe/CF+yUgi44 quIk6MrHKf98bcPX0o7uflJ2MZ2yXSBrgGjgSgKaDOU2M6ccScyXE28NqBp0oA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fJsRG4Jh4zvRs for ; Sun, 22 Feb 2026 18:08:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3d832 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sun, 22 Feb 2026 18:08:10 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Cc: John From: Adrian Chadd Subject: git: d1947d0a1a55 - main - rge: correctly free busdma memory / zero things out only if allocated List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: adrian X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: d1947d0a1a55f905e5ed076d46d4f75a00c6f823 Auto-Submitted: auto-generated Date: Sun, 22 Feb 2026 18:08:10 +0000 Message-Id: <699b460a.3d832.185f41ce@gitrepo.freebsd.org> The branch main has been updated by adrian: URL: https://cgit.FreeBSD.org/src/commit/?id=d1947d0a1a55f905e5ed076d46d4f75a00c6f823 commit d1947d0a1a55f905e5ed076d46d4f75a00c6f823 Author: John AuthorDate: 2026-02-22 18:06:44 +0000 Commit: Adrian Chadd CommitDate: 2026-02-22 18:07:34 +0000 rge: correctly free busdma memory / zero things out only if allocated * Only free busdma memory that was allocated * Don't free tx/rx rings until their buffers have also been freed PR: kern/293307 Reviewed by: zlei Differential Revision: https://reviews.freebsd.org/D55420 --- sys/dev/rge/if_rge.c | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/sys/dev/rge/if_rge.c b/sys/dev/rge/if_rge.c index 5daede0ac95d..dfa6cd1325e5 100644 --- a/sys/dev/rge/if_rge.c +++ b/sys/dev/rge/if_rge.c @@ -1762,13 +1762,6 @@ rge_freemem(struct rge_softc *sc) RGE_ASSERT_UNLOCKED(sc); - /* TX desc */ - bus_dmamap_unload(sc->sc_dmat_tx_desc, q->q_tx.rge_tx_list_map); - if (q->q_tx.rge_tx_list != NULL) - bus_dmamem_free(sc->sc_dmat_tx_desc, q->q_tx.rge_tx_list, - q->q_tx.rge_tx_list_map); - memset(&q->q_tx, 0, sizeof(q->q_tx)); - /* TX buf */ for (i = 0; i < RGE_TX_LIST_CNT; i++) { struct rge_txq *tx = &q->q_tx.rge_txq[i]; @@ -1800,12 +1793,13 @@ rge_freemem(struct rge_softc *sc) } } - /* RX desc */ - bus_dmamap_unload(sc->sc_dmat_rx_desc, q->q_rx.rge_rx_list_map); - if (q->q_rx.rge_rx_list != 0) - bus_dmamem_free(sc->sc_dmat_rx_desc, q->q_rx.rge_rx_list, - q->q_rx.rge_rx_list_map); - memset(&q->q_rx, 0, sizeof(q->q_tx)); + /* TX desc */ + if (q->q_tx.rge_tx_list != NULL) { + bus_dmamap_unload(sc->sc_dmat_tx_desc, q->q_tx.rge_tx_list_map); + bus_dmamem_free(sc->sc_dmat_tx_desc, q->q_tx.rge_tx_list, + q->q_tx.rge_tx_list_map); + } + memset(&q->q_tx, 0, sizeof(q->q_tx)); /* RX buf */ for (i = 0; i < RGE_RX_LIST_CNT; i++) { @@ -1830,6 +1824,14 @@ rge_freemem(struct rge_softc *sc) } } + /* RX desc */ + if (q->q_rx.rge_rx_list != NULL) { + bus_dmamap_unload(sc->sc_dmat_rx_desc, q->q_rx.rge_rx_list_map); + bus_dmamem_free(sc->sc_dmat_rx_desc, q->q_rx.rge_rx_list, + q->q_rx.rge_rx_list_map); + } + memset(&q->q_rx, 0, sizeof(q->q_tx)); + return (0); } @@ -1845,9 +1847,10 @@ rge_free_stats_mem(struct rge_softc *sc) RGE_ASSERT_UNLOCKED(sc); - bus_dmamap_unload(sc->sc_dmat_stats_buf, ss->map); - if (ss->stats != NULL) + if (ss->stats != NULL) { + bus_dmamap_unload(sc->sc_dmat_stats_buf, ss->map); bus_dmamem_free(sc->sc_dmat_stats_buf, ss->stats, ss->map); + } memset(ss, 0, sizeof(*ss)); return (0); }