From nobody Mon Apr 6 09:09:54 2026 Received: from mail-pl1-f194.google.com (mail-pl1-f194.google.com [209.85.214.194]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0743530C62E for ; Fri, 20 Mar 2026 06:20:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.194 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773987650; cv=none; b=ZaahDVr0XuiVkC1q4ns/4DZagHIRNKcw94NyekwqMYhFsVH4kaLXiF2uCZMJlLSOOpVs+be5yirGtWJshRduSo3Jq0I2djLk+tlptyLIeUF3d/Z7pavJMEm11fdZrWd8oleY7SxVV3IaVEPcZxN2iGKr4I1uwLXPAgAxR14bVVk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773987650; c=relaxed/simple; bh=/GAq46yYSAf24859SU4N9spoCPWEk/QOWi0M/RJlJ2U=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=G3MBQ9iSc6qSepx1ZbeYo7MpWbLAWJoJTo39chkWdbEbBBzSL8QNuF6cLavRtn+vIVKlmsKPbp9+095c+kSVxe+eGJtuea69HzIXuJiox7XWtN8/Mr/XRBgXvPaZOyXafKiBwrriUle+HGxxTg0klaXy45PExKhJn7rWpPXF9XQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Dt6c/0YI; arc=none smtp.client-ip=209.85.214.194 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Dt6c/0YI" Received: by mail-pl1-f194.google.com with SMTP id d9443c01a7336-2b05761bec1so12146935ad.1 for ; Thu, 19 Mar 2026 23:20:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773987648; x=1774592448; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=bsX7j3IsBCAR2JvcHeowKyby9MbV8ivPuVe631jWpdc=; b=Dt6c/0YIyrHgHAh5s7Xd1Ynvd+8b+zMBTNMH+lgu5UxIKTpZ1UnzA3Jdpq+GYq6tBk 130NFkdV9QzHZ/L/Y47f58zioybTtiyqqib2oc9QqigbMbHOcKSwQrB/mMX9hLaCZCUe JV4xdwDGFVP9p3iSif7rvXX/PhDqA1vu4xAQTGwoLAQuJXnjUuK+E6iQMLefI0dq8zzd ojjs434uEi1BzNcpgD1G/JBsJdajqOXvsOBLJrXH7GCQqvlSETdq5XFWc1WL+/Tp1Qfp 8vhSsVF7ymqOHZSR3PHtiDVhJ580hUuDIUtbfbs2wTSbh+kMy3SdWmAQuFwv1zyOHun7 iVoA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773987648; x=1774592448; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=bsX7j3IsBCAR2JvcHeowKyby9MbV8ivPuVe631jWpdc=; b=qi7/PEU2RGwBH1jQpyyemFNcdiwdg1lWmYzE3hQkLZygWdv7BNbA3zghQw/YV2RSYp f5FYosC+Wg0dhTGpjTT7LFy+z6GKlFiKtgLOEcx+bLLUHfWQOx3JjQXCWQ/vY5znzIvw pFn1AfmGpNjud4GpnlAqBml4WBGRliVHdYkZXud0GFe7RTvN199ZQRvztJU6fJstyeTK Vn+yNPV7EdQ2eYuK8KBGTrFbss+jAtVNTatpjasuDTB1zaCytueRt5Li1hRHzY+LpgSj iYqwrcKCd7n8gR5KS6irVe1SIZFJL+Pnl5Dg7EpWoZSG+qL9S2HIttA4VOH6zGlwE5rb XO4Q== X-Forwarded-Encrypted: i=1; AJvYcCXldCFQkdGNpmKKaq3qs/68tAkVFnM09nRfnNwR7rjdnma5hikZgTZYNx6ZD2HL/34bUp/NLwtC6uW/8Ek=@vger.kernel.org X-Gm-Message-State: AOJu0YxzrvWp7vDspYAtGR/GZLBek8FC3WFBI6Eoa/4VVhNT2IflSls6 gU27UOFmCJHbNMiWscdTla+RxOUy8niqxT4S2CCsfRDv+TNp0N9SVC0H1huoeBCJ3xo= X-Gm-Gg: ATEYQzy9YKxkBNwHw9AjzIODqdSHoS/Ik47P1tOjL2T9eZ0aVhx0+8TPnCfOz7MTVop +GiyfYimrOYReaI+3qP5GAztJZ1so30/jF6Hz7y6dpAChOkLmNTKkUMOQzjo/PMnMsiTWzjo/J0 iVMrCxW+iCZTm1m2HfSZ0VkPGgTIl/K1VNkve3/w9JkAKAVDQ2Miuc0pWs1tJOjgZpnA8GAkkUq NUhvXdMbGyMrkuxEJrZAL3PuI3FDim8dMtg2qKSj2Pz5pZRrnp4mvEZ4uUe58QT39zvrjTMjinv ByQTb+Z0WPMei5AeNYY9gDdaotjUuF0X3i5QJAu/SN7ejkqz8CdSbDudw2CoE6UzrO7jTu0ssCQ PnfD3oL0OMrpubheolqw2uYT6aH519eChlIlqpPP2us6KbrKB0iMt+PX/jRCe0X/k7gSpSI1odh g0/QQ4RNqK42B+51RXLV2ouc6LrfjMexETosZiCY75fa0YqA== X-Received: by 2002:a17:903:1a2e:b0:2ae:cd8c:bd04 with SMTP id d9443c01a7336-2b077165dabmr46941965ad.10.1773987648287; Thu, 19 Mar 2026 23:20:48 -0700 (PDT) Received: from XP-PC-yangg9.xiaopeng.local ([98.98.112.219]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b0836554acsm14418715ad.51.2026.03.19.23.20.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 19 Mar 2026 23:20:47 -0700 (PDT) From: yangg9 To: netdev@vger.kernel.org Cc: andrew+netdev@lunn.ch, davem@davemloft.net, kuba@kernel.org, yangg9@xiaopeng.com, edumazet@google.com, pabeni@redhat.com, mcoquelin.stm32@gmail.com, alexandre.torgue@foss.st.com, rmk+kernel@armlinux.org.uk, maxime.chevallier@bootlin.com, vladimir.oltean@nxp.com, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH] net: stmmac: close reset IRQ window and avoid double free Date: Fri, 20 Mar 2026 14:19:55 +0800 Message-ID: <20260320061955.833785-1-cohenyang511@gmail.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: yangg9 During reset, stmmac_reset_subtask() used to set STMMAC_DOWN before IRQs were freed in __stmmac_release(). That leaves a window where interrupts can still fire after the device is marked down, which may lead to interrupt storms while the interface is transitioning. Move stmmac_free_irq() earlier in the reset flow, before setting STMMAC_DOWN, so the reset path no longer has that interrupt window. Since IRQs are now released in stmmac_reset_subtask(), guard IRQ release in __stmmac_release() with STMMAC_DOWN to avoid a second free_irq() during the same reset sequence. This removes the interrupt-storm window in reset and prevents double IRQ release. Signed-off-by: yangg9 --- drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/ne= t/ethernet/stmicro/stmmac/stmmac_main.c index 124d7a00f9f0..99b661379d9c 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -4212,8 +4212,9 @@ static void __stmmac_release(struct net_device *dev) =20 netif_tx_disable(dev); =20 - /* Free the IRQ lines */ - stmmac_free_irq(dev, REQ_IRQ_ERR_ALL, 0); + /* In reset flow IRQs can be freed before dev_close(). */ + if (!test_bit(STMMAC_DOWN, &priv->state)) + stmmac_free_irq(dev, REQ_IRQ_ERR_ALL, 0); =20 /* Stop TX/RX DMA and clear the descriptors */ stmmac_stop_all_dma(priv); @@ -7331,6 +7332,8 @@ static void stmmac_reset_subtask(struct stmmac_priv *= priv) while (test_and_set_bit(STMMAC_RESETING, &priv->state)) usleep_range(1000, 2000); =20 + stmmac_free_irq(priv->dev, REQ_IRQ_ERR_ALL, 0); + set_bit(STMMAC_DOWN, &priv->state); dev_close(priv->dev); dev_open(priv->dev, NULL); --=20 2.43.0