From nobody Sat Oct 31 20:24:26 2026 X-Original-To: dev-commits-src-branches@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 4jH8Zf2BNGz6xFGt for ; Sat, 31 Oct 2026 20:24:26 +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) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4jH8Zf0PLyz4Npw for ; Sat, 31 Oct 2026 20:24:26 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1793478266; 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=1j1vbI7eFp10lizc+Bf7BbxcwF0eCW52r2wR4t5b9Qo=; b=UHk8B/zR4DtcVqGevB1rfu7vS14jcJpSqpPw3RXq+sMxSjTk0p95pjrJcFgnR2pgFVTuc2 GXXEj9Axsb57cjwyeWEqg3ywoIa7XnMR8i2IZXUcppiSoLmXI33mRmCG73kOfZgTBiH9Tw xzvTfVqECPUt9rWuE9vmcY4Ptcku2J3Gxk9ZPgjr+JIv/NINC9pczNXuCWoaAoTHD20Rwd XLBu9khyT30hKhBZeRHLwrccg8cCNmyEI0NIyrJgmg2QDsmc4CTTpc5IR2rOSkgUgyHkaI CfXgBU5Sdl1fDPF8bIIbvmPydn8w7F2NTXEKSTJP7j9ZhYcJQnwwrUER5UK2Jg== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1793478266; b=GPYk9vHedYXRCX2xj63R737RBRxohjcE1l46TVdC6vEB2ZC1UtTSG+nFZocKCRUXq7hqyQ +wu+eED+cjQQyceEkOypfd+giKsnmWMwFzE8Ky93ZpPpMFIMBAJ9suVf0+FYJ/KQxaW4Is olYH3wZbwbVWBl98eEfXhCxvMZAmcknPRNq1oYtxlierWCzE/9zVfvmkQGVLR99jUemPT6 AgLN+3bYIcrWIBsp6s0uae5Eg32AYVzsgGP7k6l6MjrGX3os/Z7jV6FbpvmHagc/ZSTM0e Q2odQJ3ksoWkMyiRBZ4MMUVcLDsl36OJLzf2vII8wzZBafnMQlM7cuPimz+BmA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1793478266; 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=1j1vbI7eFp10lizc+Bf7BbxcwF0eCW52r2wR4t5b9Qo=; b=fwYVoY2taqiXW8CSBQrZC5JBK2rpkKflkVm26IC5OZ2gvlY7I+9YvytataPzQj74TlV4Hz hfdT1TTJKTogICWU2jZ3PQqWwzaCnMQghjAgYwHlZZR9LuiqQpv34o+u+PtpCl6kyqrWuV GobeLQpGdUF1ZtfedcwDfQ3MbSQ6FPIq1+f/M2voRyBpGeN9Z12VGHmy+N77Z03RISTLVT qY+qkNNl2tHvJb+Mu1v5W29gokG1pzo+9/7aI2wbgXPVcxxlbWsSpHg9bJYM/mgOzTripm 3NfxEk9veFnEB2vcFJd6/yoovqdGHN3E7qBSexxoUp54k+soq8+UUvP1z7/W4w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4jH8Zf041JzQvQ for ; Sat, 31 Oct 2026 20:24:26 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 34970 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sat, 31 Oct 2026 20:24:26 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: John From: Adrian Chadd Subject: git: 818d2192135e - stable/15 - rge: fix callout setup/teardown; handle invalid ethernet address List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org List-Id: Commits to the stable branches of the FreeBSD src repository List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list 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/stable/15 X-Git-Reftype: branch X-Git-Commit: 818d2192135ed3dd8fd862eb72bf21c8e0524732 Auto-Submitted: auto-generated Date: Sat, 31 Oct 2026 20:24:26 +0000 Message-Id: <6ae64e7a.34970.1fae6fb7@gitrepo.freebsd.org> The branch stable/15 has been updated by adrian: URL: https://cgit.FreeBSD.org/src/commit/?id=818d2192135ed3dd8fd862eb72bf21c8e0524732 commit 818d2192135ed3dd8fd862eb72bf21c8e0524732 Author: John AuthorDate: 2026-02-22 18:06:39 +0000 Commit: Adrian Chadd CommitDate: 2026-10-31 20:15:04 +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 (cherry picked from commit d5ca52182e522a192d0c8fbdaa438f50e200082f) --- 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);