From nobody Sun Feb 22 02:00:11 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 4fJRyN0rtWz6SjKB for ; Sun, 22 Feb 2026 02:00:12 +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 4fJRyN04YZz46Nv for ; Sun, 22 Feb 2026 02:00:12 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1771725612; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=nORMdHbyPkoJ+PefmhYlO6/3UIky+d47XjBFalRDVMs=; b=EYrKLP4FMw/kDYG06NNgpcFWxi9VjgpynyHiJ2WxIraYxTBSBx2PMCZc3bsrcXJG56ocH7 qH4Kvig/5IaDeyjbu8p82hOPNyjdcifYkGTr7yZLv/8Ux3uzgV6RxI5m6MYN67jjFklo+E hKikSBsenYTXCO1H8j58yqKfOazh7K/gbLXUW5gMyrdqcGeJDK7nRW7b4tVqlDpS01KEoS t3t47MlJSP7oMNa31n9x553T82yOHxExMZI2qetNBrr9ikbXrIMwCZdnGTgPhNNd/8wZ2C BbnL1+dGk8kQAff3w7n/GY1Eyk5eoy3a8ggcDHQvmUAIfYqEp+l3zegkbCwaDw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1771725612; a=rsa-sha256; cv=none; b=tdkBfvyukCnFrLoxVfJMtAiaVcQkuYjiT88ZwyZ2e8zwxUBR0B8/Ah2B18R6e1DZ/j3T1V 6o4Qvpc1vBJq8PLSiWQcLNVrg5H/OF1foQj/VdYYy8E/lWwdGBf6M8MAv528u66DuJ9MJ/ 3TB2BbMuzdLwDJ7jSo2Db1ZnX6dozrWOEMFrZ6GW/JVx4AJM9rff5FDKq9JTF2m83sJCLr U8PxsX2tG1yAapyq92xUiGMuGTYA7bDJuGse0Fkn/v6vABMVrMFAqr11rAJLcKGYIsTQ3i 6vZyuQql2ciuUcQkXOR0PT2A89Yej/I+6p4V25teIYAsApM4s11sNjgNlazlVA== 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=1771725612; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=nORMdHbyPkoJ+PefmhYlO6/3UIky+d47XjBFalRDVMs=; b=hLq+8MHmQ86B6NK+c019KbN37HBSmGFriSc1Fz3ifqkM4A1jNqCpICpShQT/hmw4chb7M1 mjN557vArKLG4fGJ4TB7AocWyQa3pGlArF7dRCP5uLajACdzi2/flQj79go2shT4ZDxh4b 255hAzWSCmEBvfQe4Hmm3Lbopxs0/0Z+rStolm0X2mEqzl/XU97ExX0XgaZohaju+HgpU7 e8SvXfBeFJFiifKlOcHzWAtJOTWMyJllJG9OYnkrhfgl3lZ0Nk74/MIAKI4U5KWdDyIU6N 2BtdWB4FBytgMGFBYayzPMFkul/GSDNOyzB+oSR5ZRubqpiDIouB01ZvFVA1lw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fJRyM6TtMz8VC for ; Sun, 22 Feb 2026 02:00:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 4690e by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sun, 22 Feb 2026 02:00:11 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Enji Cooper Subject: git: eda36ae09dd1 - main - asmc: resource cleanup simplifications 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: ngie X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: eda36ae09dd1fab78bd377739fc5d6c65c61f5d7 Auto-Submitted: auto-generated Date: Sun, 22 Feb 2026 02:00:11 +0000 Message-Id: <699a632b.4690e.2fab15e8@gitrepo.freebsd.org> The branch main has been updated by ngie: URL: https://cgit.FreeBSD.org/src/commit/?id=eda36ae09dd1fab78bd377739fc5d6c65c61f5d7 commit eda36ae09dd1fab78bd377739fc5d6c65c61f5d7 Author: Enji Cooper AuthorDate: 2026-01-30 06:55:08 +0000 Commit: Enji Cooper CommitDate: 2026-02-22 01:59:06 +0000 asmc: resource cleanup simplifications This change makes `asmc_detach(..)` reentrant by setting freed resources to known invalid values when done, and makes `asmc_attach(..)` call `asmc_detach(..)` instead of attempting to the semi-equivalent way of cleaning up the driver resources allocated in `asmc_detach(..)`. MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D55413 --- sys/dev/asmc/asmc.c | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/sys/dev/asmc/asmc.c b/sys/dev/asmc/asmc.c index bff214c084c5..084b57331dd9 100644 --- a/sys/dev/asmc/asmc.c +++ b/sys/dev/asmc/asmc.c @@ -795,25 +795,21 @@ asmc_attach(device_t dev) if (sc->sc_irq == NULL) { device_printf(dev, "unable to allocate IRQ resource\n"); ret = ENXIO; - goto err2; + goto err; } ret = bus_setup_intr(dev, sc->sc_irq, INTR_TYPE_MISC | INTR_MPSAFE, asmc_sms_intrfast, NULL, dev, &sc->sc_cookie); if (ret) { device_printf(dev, "unable to setup SMS IRQ\n"); - goto err1; + goto err; } + nosms: return (0); -err1: - bus_release_resource(dev, SYS_RES_IRQ, sc->sc_rid_irq, sc->sc_irq); -err2: - bus_release_resource(dev, SYS_RES_IOPORT, sc->sc_rid_port, - sc->sc_ioport); - mtx_destroy(&sc->sc_mtx); - if (sc->sc_sms_tq) - taskqueue_free(sc->sc_sms_tq); + +err: + asmc_detach(dev); return (ret); } @@ -826,16 +822,25 @@ asmc_detach(device_t dev) if (sc->sc_sms_tq) { taskqueue_drain(sc->sc_sms_tq, &sc->sc_sms_task); taskqueue_free(sc->sc_sms_tq); + sc->sc_sms_tq = NULL; } - if (sc->sc_cookie) + if (sc->sc_cookie) { bus_teardown_intr(dev, sc->sc_irq, sc->sc_cookie); - if (sc->sc_irq) + sc->sc_cookie = NULL; + } + if (sc->sc_irq) { bus_release_resource(dev, SYS_RES_IRQ, sc->sc_rid_irq, sc->sc_irq); - if (sc->sc_ioport) + sc->sc_irq = NULL; + } + if (sc->sc_ioport) { bus_release_resource(dev, SYS_RES_IOPORT, sc->sc_rid_port, sc->sc_ioport); - mtx_destroy(&sc->sc_mtx); + sc->sc_ioport = NULL; + } + if (mtx_initialized(&sc->sc_mtx)) { + mtx_destroy(&sc->sc_mtx); + } return (0); }