Thread (5 messages) 5 messages, 2 authors, 2025-05-08

Re: [PATCH] net: airoha: Fix an error handling path in airoha_probe()

From: Christophe JAILLET <hidden>
Date: 2025-05-08 14:30:16
Also in: kernel-janitors, linux-arm-kernel, linux-mediatek, lkml

Le 18/04/2025 à 14:28, Lorenzo Bianconi a écrit :
quoted
If an error occurs after a successful airoha_hw_init() call,
airoha_ppe_deinit() needs to be called as already done in the remove
function.

Fixes: 00a7678310fe ("net: airoha: Introduce flowtable offload support")
Signed-off-by: Christophe JAILLET <redacted>
---
Compile tested-only
---
  drivers/net/ethernet/airoha/airoha_eth.c | 2 ++
  1 file changed, 2 insertions(+)
diff --git a/drivers/net/ethernet/airoha/airoha_eth.c b/drivers/net/ethernet/airoha/airoha_eth.c
index 69e523dd4186..252b32ceb064 100644
--- a/drivers/net/ethernet/airoha/airoha_eth.c
+++ b/drivers/net/ethernet/airoha/airoha_eth.c
@@ -2631,6 +2631,8 @@ static int airoha_probe(struct platform_device *pdev)
  		}
  	}
  	free_netdev(eth->napi_dev);
+
+	airoha_ppe_deinit(eth);
  	platform_set_drvdata(pdev, NULL);
  
  	return err;
-- 
2.49.0
Hi Christophe,

I agree we are missing a airoha_ppe_deinit() call in the probe error path,
but we should move it above after stopping the NAPI since if airoha_hw_init()
fails we will undo the work done by airoha_ppe_init(). Something like:
Agreed.

I'll send a v2 with as a small series, because of another leak I found 
while looking at it.

And while at it, I'll propose a few clean-ups.

CJ

quoted hunk ↗ jump to hunk
diff --git a/drivers/net/ethernet/airoha/airoha_eth.c b/drivers/net/ethernet/airoha/airoha_eth.c
index 16c7896f931f..37d9678798d1 100644
--- a/drivers/net/ethernet/airoha/airoha_eth.c
+++ b/drivers/net/ethernet/airoha/airoha_eth.c
@@ -2959,6 +2959,7 @@ static int airoha_probe(struct platform_device *pdev)
  error_napi_stop:
  	for (i = 0; i < ARRAY_SIZE(eth->qdma); i++)
  		airoha_qdma_stop_napi(&eth->qdma[i]);
+	airoha_ppe_init(eth);
  error_hw_cleanup:
  	for (i = 0; i < ARRAY_SIZE(eth->qdma); i++)
  		airoha_hw_cleanup(&eth->qdma[i]);

Agree?

Regards,
Lorenzo
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help