From nobody Sun Feb 22 18:08:09 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 4fJsRG0dRCz6TX58 for ; Sun, 22 Feb 2026 18:08:10 +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 4fJsRF4pBCz40jv for ; Sun, 22 Feb 2026 18:08:09 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1771783689; 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=3g1wAZIGix/TMe0swshJGiIgq7VuA5oOdRAQfh9nHVM=; b=EWRVUEENh4ux2aoStxRQqYPihWSnwcHmsAgqHtqaewAybpadfydRyCW+PfPS6rbZKNdLZ6 WKpgfmdvmLdi1O4YBDmxhN7M3g8S9O9LqdJ+T57gqWa63PVsl7EsVQoph2uzegdwiMqEqB bALm8snZD1zqM0FSu4Kgon1DV+DJY3eqkEik24V/AOFDAD6sdzE9974n/gIq/5BoVa3haM CuzzxUG5Ft/mghgvAvfaHB6rtPe6bxKYhTKgGNe1w/xajvNlwxeza3ihOI0f0sSmiUpHZH vG/9LNUBsfhtqjF++6Rz/P5lA8ZwPdPQ1qP1Zw/2kzw3MF+xMwAUmiJsmj34Gg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1771783689; a=rsa-sha256; cv=none; b=l+BUq3KjFE4gu+zcw0gLeA+GifhacKdj38Ske8x7Nns/wsgUSOSRFjCOgT6kZ+p9PPLJ9t /KQoHvSd49tW6wGo5hZ6Nh3CYm7QZWpyASHolPeMgTQ2gKQ1G+8z5fiHhx2QKWI3wKThMU 0MdPB9MptZEPZvPVPz2HDGgYgSzBI3/gETeQ4JrVQSY8o+NzF9QummhaF99tGGkYcr4nvk gT79qn2obs6gKNsa6he19E1rIZbuQuxDMRxvWCf7YU1Xb3UNbaUXAcKabNg2bYDX3YWkNA EKBfelftDmevY73sz1+EKKtnDWNPSXZ2rcArC7sGMXFp5QDVpMYPBB44jF98zg== 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=1771783689; 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=3g1wAZIGix/TMe0swshJGiIgq7VuA5oOdRAQfh9nHVM=; b=a6M6ySX5yk5SO7QJ4e94IRs03VkdPfY4J8mYwY9n2JGS3kW7W+g7wHp6HXNvdTnt9PA3qE mb4OXPO0kvu+wC9VdyfPbDv/kzYuP+8u4gQItp3iT75f8QharB47E/1IuRMJrbgTQ4OYbu cW3rfDUYxCjjNQ8/w0VfxF/hRhI56sILE8K+kaefaS0KIC4uKqdF5eZHwc0qCnu8KMdd8y c0IzxtwkaiPAU7FMfK+xx3CbRZddGrtyEL1PFZqTaTFKCYaYyC3WCrxV6kcc99Oq0d47e7 ytyhQ/Ug6VuDBQSOHs/jU8DLa/mYvQZK8QDyqQoujI3CgOFL2Ao+ouutwfe8rg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fJsRF3Y76zvc0 for ; Sun, 22 Feb 2026 18:08:09 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3cb04 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sun, 22 Feb 2026 18:08:09 +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: d5ca52182e52 - main - rge: fix callout setup/teardown; handle invalid ethernet address 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: d5ca52182e522a192d0c8fbdaa438f50e200082f Auto-Submitted: auto-generated Date: Sun, 22 Feb 2026 18:08:09 +0000 Message-Id: <699b4609.3cb04.61c61729@gitrepo.freebsd.org> The branch main has been updated by adrian: URL: https://cgit.FreeBSD.org/src/commit/?id=d5ca52182e522a192d0c8fbdaa438f50e200082f commit d5ca52182e522a192d0c8fbdaa438f50e200082f Author: John AuthorDate: 2026-02-22 18:06:39 +0000 Commit: Adrian Chadd CommitDate: 2026-02-22 18:07:29 +0000 rge: fix callout setup/teardown; handle invalid ethernet address * Do the callout init early; since some of the teardown path expects the callout to be valid * Handle an invalid ethernet address by generating a local one. PR: kern/293307 Reviewed by: zlei Differential Revision: https://reviews.freebsd.org/D55419 --- sys/dev/rge/if_rge.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/sys/dev/rge/if_rge.c b/sys/dev/rge/if_rge.c index 443acbbd77c3..5daede0ac95d 100644 --- a/sys/dev/rge/if_rge.c +++ b/sys/dev/rge/if_rge.c @@ -67,6 +67,9 @@ #include "if_rge_sysctl.h" #include "if_rge_stats.h" +#define ETHER_IS_VALID(addr) \ + (!ETHER_IS_MULTICAST(addr.octet) && !ETHER_IS_ZERO(addr.octet)) + #define RGE_CSUM_FEATURES (CSUM_IP | CSUM_TCP | CSUM_UDP) static int rge_attach(device_t); @@ -182,7 +185,7 @@ rge_attach_if(struct rge_softc *sc, const char *eaddr) static int rge_attach(device_t dev) { - uint8_t eaddr[ETHER_ADDR_LEN]; + struct ether_addr eaddr; struct rge_softc *sc; struct rge_queues *q; uint32_t hwrev, reg; @@ -196,6 +199,8 @@ rge_attach(device_t dev) mtx_init(&sc->sc_mtx, device_get_nameunit(dev), MTX_NETWORK_LOCK, MTX_DEF); + callout_init_mtx(&sc->sc_timeout, &sc->sc_mtx, 0); + /* Enable bus mastering */ pci_enable_busmaster(dev); @@ -465,9 +470,15 @@ rge_attach(device_t dev) goto fail; } - rge_get_macaddr(sc, eaddr); + rge_get_macaddr(sc, eaddr.octet); RGE_UNLOCK(sc); + if (!ETHER_IS_VALID(eaddr)) { + device_printf(dev, + "No MAC address found. Using ether_gen_addr().\n"); + ether_gen_addr_byname(device_get_nameunit(dev), &eaddr); + } + if (rge_allocmem(sc)) goto fail; if (rge_alloc_stats_mem(sc)) @@ -481,7 +492,7 @@ rge_attach(device_t dev) ifmedia_set(&sc->sc_media, IFM_ETHER | IFM_AUTO); sc->sc_media.ifm_media = sc->sc_media.ifm_cur->ifm_media; - rge_attach_if(sc, eaddr); + rge_attach_if(sc, eaddr.octet); /* * TODO: technically should be per txq but we only support @@ -501,8 +512,6 @@ rge_attach(device_t dev) TASK_INIT(&sc->sc_tx_task, 0, rge_tx_task, sc); - callout_init_mtx(&sc->sc_timeout, &sc->sc_mtx, 0); - return (0); fail: rge_detach(dev);