public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH net RESEND 0/3] net: Use IRQF_NO_AUTOEN flag in request_irq()
@ 2024-09-11  9:44 Jinjie Ruan
  2024-09-11  9:44 ` [PATCH net RESEND 1/3] net: apple: bmac: " Jinjie Ruan
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Jinjie Ruan @ 2024-09-11  9:44 UTC (permalink / raw)
  To: davem, edumazet, kuba, pabeni, claudiu.manoil, vladimir.oltean,
	louis.peens, damien.lemoal, set_pte_at, mpe, horms, yinjun.zhang,
	ryno.swart, johannes.berg, fei.qin, netdev, linux-kernel,
	oss-drivers
  Cc: ruanjinjie

As commit cbe16f35bee6 ("genirq: Add IRQF_NO_AUTOEN for request_irq/nmi()")
said, reqeust_irq() and then disable_irq() is unsafe.

IRQF_NO_AUTOEN flag can be used by drivers to request_irq(). It prevents
the automatic enabling of the requested interrupt in the same safe way.
With that the usage can be simplified and corrected.

Only compile-tested.

v1 -> RESNED
- Add reviewed-by.
- Put wireless into another patch set.
- Update to net prefix subject.

Jinjie Ruan (3):
  net: apple: bmac: Use IRQF_NO_AUTOEN flag in request_irq()
  net: enetc: Use IRQF_NO_AUTOEN flag in request_irq()
  nfp: Use IRQF_NO_AUTOEN flag in request_irq()

 drivers/net/ethernet/apple/bmac.c                   | 3 +--
 drivers/net/ethernet/freescale/enetc/enetc.c        | 3 +--
 drivers/net/ethernet/netronome/nfp/nfp_net_common.c | 5 ++---
 3 files changed, 4 insertions(+), 7 deletions(-)

-- 
2.34.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH net RESEND 1/3] net: apple: bmac: Use IRQF_NO_AUTOEN flag in request_irq()
  2024-09-11  9:44 [PATCH net RESEND 0/3] net: Use IRQF_NO_AUTOEN flag in request_irq() Jinjie Ruan
@ 2024-09-11  9:44 ` Jinjie Ruan
  2024-09-11  9:44 ` [PATCH net RESEND 2/3] net: enetc: " Jinjie Ruan
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Jinjie Ruan @ 2024-09-11  9:44 UTC (permalink / raw)
  To: davem, edumazet, kuba, pabeni, claudiu.manoil, vladimir.oltean,
	louis.peens, damien.lemoal, set_pte_at, mpe, horms, yinjun.zhang,
	ryno.swart, johannes.berg, fei.qin, netdev, linux-kernel,
	oss-drivers
  Cc: ruanjinjie

disable_irq() after request_irq() still has a time gap in which
interrupts can come. request_irq() with IRQF_NO_AUTOEN flag will
disable IRQ auto-enable when request IRQ.

Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
---
v1 -> RESEND
- Put wireless into another patch set.
---
 drivers/net/ethernet/apple/bmac.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/apple/bmac.c b/drivers/net/ethernet/apple/bmac.c
index 292b1f9cd9e7..785f4b4ff758 100644
--- a/drivers/net/ethernet/apple/bmac.c
+++ b/drivers/net/ethernet/apple/bmac.c
@@ -1317,7 +1317,7 @@ static int bmac_probe(struct macio_dev *mdev, const struct of_device_id *match)
 
 	timer_setup(&bp->tx_timeout, bmac_tx_timeout, 0);
 
-	ret = request_irq(dev->irq, bmac_misc_intr, 0, "BMAC-misc", dev);
+	ret = request_irq(dev->irq, bmac_misc_intr, IRQF_NO_AUTOEN, "BMAC-misc", dev);
 	if (ret) {
 		printk(KERN_ERR "BMAC: can't get irq %d\n", dev->irq);
 		goto err_out_iounmap_rx;
@@ -1336,7 +1336,6 @@ static int bmac_probe(struct macio_dev *mdev, const struct of_device_id *match)
 	/* Mask chip interrupts and disable chip, will be
 	 * re-enabled on open()
 	 */
-	disable_irq(dev->irq);
 	pmac_call_feature(PMAC_FTR_BMAC_ENABLE, macio_get_of_node(bp->mdev), 0, 0);
 
 	if (register_netdev(dev) != 0) {
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH net RESEND 2/3] net: enetc: Use IRQF_NO_AUTOEN flag in request_irq()
  2024-09-11  9:44 [PATCH net RESEND 0/3] net: Use IRQF_NO_AUTOEN flag in request_irq() Jinjie Ruan
  2024-09-11  9:44 ` [PATCH net RESEND 1/3] net: apple: bmac: " Jinjie Ruan
@ 2024-09-11  9:44 ` Jinjie Ruan
  2024-09-11  9:44 ` [PATCH net RESEND 3/3] nfp: " Jinjie Ruan
  2024-09-13  3:50 ` [PATCH net RESEND 0/3] net: " patchwork-bot+netdevbpf
  3 siblings, 0 replies; 5+ messages in thread
From: Jinjie Ruan @ 2024-09-11  9:44 UTC (permalink / raw)
  To: davem, edumazet, kuba, pabeni, claudiu.manoil, vladimir.oltean,
	louis.peens, damien.lemoal, set_pte_at, mpe, horms, yinjun.zhang,
	ryno.swart, johannes.berg, fei.qin, netdev, linux-kernel,
	oss-drivers
  Cc: ruanjinjie

disable_irq() after request_irq() still has a time gap in which
interrupts can come. request_irq() with IRQF_NO_AUTOEN flag will
disable IRQ auto-enable when request IRQ.

Fixes: bbb96dc7fa1a ("enetc: Factor out the traffic start/stop procedures")
Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
---
v1 -> RESEND
- Put wireless into another patch set.
---
 drivers/net/ethernet/freescale/enetc/enetc.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/freescale/enetc/enetc.c b/drivers/net/ethernet/freescale/enetc/enetc.c
index 5c45f42232d3..f04f42ea60c0 100644
--- a/drivers/net/ethernet/freescale/enetc/enetc.c
+++ b/drivers/net/ethernet/freescale/enetc/enetc.c
@@ -2305,12 +2305,11 @@ static int enetc_setup_irqs(struct enetc_ndev_priv *priv)
 
 		snprintf(v->name, sizeof(v->name), "%s-rxtx%d",
 			 priv->ndev->name, i);
-		err = request_irq(irq, enetc_msix, 0, v->name, v);
+		err = request_irq(irq, enetc_msix, IRQF_NO_AUTOEN, v->name, v);
 		if (err) {
 			dev_err(priv->dev, "request_irq() failed!\n");
 			goto irq_err;
 		}
-		disable_irq(irq);
 
 		v->tbier_base = hw->reg + ENETC_BDR(TX, 0, ENETC_TBIER);
 		v->rbier = hw->reg + ENETC_BDR(RX, i, ENETC_RBIER);
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH net RESEND 3/3] nfp: Use IRQF_NO_AUTOEN flag in request_irq()
  2024-09-11  9:44 [PATCH net RESEND 0/3] net: Use IRQF_NO_AUTOEN flag in request_irq() Jinjie Ruan
  2024-09-11  9:44 ` [PATCH net RESEND 1/3] net: apple: bmac: " Jinjie Ruan
  2024-09-11  9:44 ` [PATCH net RESEND 2/3] net: enetc: " Jinjie Ruan
@ 2024-09-11  9:44 ` Jinjie Ruan
  2024-09-13  3:50 ` [PATCH net RESEND 0/3] net: " patchwork-bot+netdevbpf
  3 siblings, 0 replies; 5+ messages in thread
From: Jinjie Ruan @ 2024-09-11  9:44 UTC (permalink / raw)
  To: davem, edumazet, kuba, pabeni, claudiu.manoil, vladimir.oltean,
	louis.peens, damien.lemoal, set_pte_at, mpe, horms, yinjun.zhang,
	ryno.swart, johannes.berg, fei.qin, netdev, linux-kernel,
	oss-drivers
  Cc: ruanjinjie

disable_irq() after request_irq() still has a time gap in which
interrupts can come. request_irq() with IRQF_NO_AUTOEN flag will
disable IRQ auto-enable when request IRQ.

Reviewed-by: Louis Peens <louis.peens@corigine.com>
Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
---
v1 -> RESEND
- Put wireless into another patch set.
- Add reviewed-by.
---
 drivers/net/ethernet/netronome/nfp/nfp_net_common.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
index 182ba0a8b095..6e0929af0f72 100644
--- a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
+++ b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
@@ -821,14 +821,13 @@ nfp_net_prepare_vector(struct nfp_net *nn, struct nfp_net_r_vector *r_vec,
 
 	snprintf(r_vec->name, sizeof(r_vec->name),
 		 "%s-rxtx-%d", nfp_net_name(nn), idx);
-	err = request_irq(r_vec->irq_vector, r_vec->handler, 0, r_vec->name,
-			  r_vec);
+	err = request_irq(r_vec->irq_vector, r_vec->handler, IRQF_NO_AUTOEN,
+			  r_vec->name, r_vec);
 	if (err) {
 		nfp_net_napi_del(&nn->dp, r_vec);
 		nn_err(nn, "Error requesting IRQ %d\n", r_vec->irq_vector);
 		return err;
 	}
-	disable_irq(r_vec->irq_vector);
 
 	irq_set_affinity_hint(r_vec->irq_vector, &r_vec->affinity_mask);
 
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH net RESEND 0/3] net: Use IRQF_NO_AUTOEN flag in request_irq()
  2024-09-11  9:44 [PATCH net RESEND 0/3] net: Use IRQF_NO_AUTOEN flag in request_irq() Jinjie Ruan
                   ` (2 preceding siblings ...)
  2024-09-11  9:44 ` [PATCH net RESEND 3/3] nfp: " Jinjie Ruan
@ 2024-09-13  3:50 ` patchwork-bot+netdevbpf
  3 siblings, 0 replies; 5+ messages in thread
From: patchwork-bot+netdevbpf @ 2024-09-13  3:50 UTC (permalink / raw)
  To: Jinjie Ruan
  Cc: davem, edumazet, kuba, pabeni, claudiu.manoil, vladimir.oltean,
	louis.peens, damien.lemoal, set_pte_at, mpe, horms, yinjun.zhang,
	ryno.swart, johannes.berg, fei.qin, netdev, linux-kernel,
	oss-drivers

Hello:

This series was applied to netdev/net-next.git (main)
by Jakub Kicinski <kuba@kernel.org>:

On Wed, 11 Sep 2024 17:44:42 +0800 you wrote:
> As commit cbe16f35bee6 ("genirq: Add IRQF_NO_AUTOEN for request_irq/nmi()")
> said, reqeust_irq() and then disable_irq() is unsafe.
> 
> IRQF_NO_AUTOEN flag can be used by drivers to request_irq(). It prevents
> the automatic enabling of the requested interrupt in the same safe way.
> With that the usage can be simplified and corrected.
> 
> [...]

Here is the summary with links:
  - [net,RESEND,1/3] net: apple: bmac: Use IRQF_NO_AUTOEN flag in request_irq()
    https://git.kernel.org/netdev/net-next/c/e08ec0597bad
  - [net,RESEND,2/3] net: enetc: Use IRQF_NO_AUTOEN flag in request_irq()
    https://git.kernel.org/netdev/net-next/c/799a92259977
  - [net,RESEND,3/3] nfp: Use IRQF_NO_AUTOEN flag in request_irq()
    https://git.kernel.org/netdev/net-next/c/daaba19d357f

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-09-13  3:50 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-11  9:44 [PATCH net RESEND 0/3] net: Use IRQF_NO_AUTOEN flag in request_irq() Jinjie Ruan
2024-09-11  9:44 ` [PATCH net RESEND 1/3] net: apple: bmac: " Jinjie Ruan
2024-09-11  9:44 ` [PATCH net RESEND 2/3] net: enetc: " Jinjie Ruan
2024-09-11  9:44 ` [PATCH net RESEND 3/3] nfp: " Jinjie Ruan
2024-09-13  3:50 ` [PATCH net RESEND 0/3] net: " patchwork-bot+netdevbpf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox