mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH net 0/4] octeon_ep: fix several bugs in exception paths
@ 2022-11-11  7:08 Ziyang Xuan
  2022-11-11  7:08 ` [PATCH net 1/4] octeon_ep: delete unnecessary napi rollback under set_queues_err in octep_open() Ziyang Xuan
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Ziyang Xuan @ 2022-11-11  7:08 UTC (permalink / raw)
  To: vburru, aayarekar, sburla, davem, edumazet, kuba, pabeni, netdev,
	linux-kernel

Find several obvious bugs during code review in exception paths. Provide
this patchset to fix them. Not tested, just compiled.

Ziyang Xuan (4):
  octeon_ep: delete unnecessary napi rollback under set_queues_err in
    octep_open()
  octeon_ep: ensure octep_get_link_status() successfully before
    octep_link_up()
  octeon_ep: fix potential memory leak in octep_device_setup()
  octeon_ep: ensure get mac address successfully before
    eth_hw_addr_set()

 .../net/ethernet/marvell/octeon_ep/octep_main.c  | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

-- 
2.25.1


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

* [PATCH net 1/4] octeon_ep: delete unnecessary napi rollback under set_queues_err in octep_open()
  2022-11-11  7:08 [PATCH net 0/4] octeon_ep: fix several bugs in exception paths Ziyang Xuan
@ 2022-11-11  7:08 ` Ziyang Xuan
  2022-11-11  7:08 ` [PATCH net 2/4] octeon_ep: ensure octep_get_link_status() successfully before octep_link_up() Ziyang Xuan
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Ziyang Xuan @ 2022-11-11  7:08 UTC (permalink / raw)
  To: vburru, aayarekar, sburla, davem, edumazet, kuba, pabeni, netdev,
	linux-kernel

octep_napi_add() and octep_napi_enable() are all after
netif_set_real_num_{tx,rx}_queues() in octep_open(), so it is unnecessary
napi rollback under set_queues_err. Delete them to fix it.

Fixes: 37d79d059606 ("octeon_ep: add Tx/Rx processing and interrupt support")
Signed-off-by: Ziyang Xuan <william.xuanziyang@huawei.com>
---
 drivers/net/ethernet/marvell/octeon_ep/octep_main.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/drivers/net/ethernet/marvell/octeon_ep/octep_main.c b/drivers/net/ethernet/marvell/octeon_ep/octep_main.c
index 9089adcb75f9..7985a748fafe 100644
--- a/drivers/net/ethernet/marvell/octeon_ep/octep_main.c
+++ b/drivers/net/ethernet/marvell/octeon_ep/octep_main.c
@@ -527,8 +527,6 @@ static int octep_open(struct net_device *netdev)
 	return 0;
 
 set_queues_err:
-	octep_napi_disable(oct);
-	octep_napi_delete(oct);
 	octep_clean_irqs(oct);
 setup_irq_err:
 	octep_free_oqs(oct);
-- 
2.25.1


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

* [PATCH net 2/4] octeon_ep: ensure octep_get_link_status() successfully before octep_link_up()
  2022-11-11  7:08 [PATCH net 0/4] octeon_ep: fix several bugs in exception paths Ziyang Xuan
  2022-11-11  7:08 ` [PATCH net 1/4] octeon_ep: delete unnecessary napi rollback under set_queues_err in octep_open() Ziyang Xuan
@ 2022-11-11  7:08 ` Ziyang Xuan
  2022-11-11  7:09 ` [PATCH net 3/4] octeon_ep: fix potential memory leak in octep_device_setup() Ziyang Xuan
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Ziyang Xuan @ 2022-11-11  7:08 UTC (permalink / raw)
  To: vburru, aayarekar, sburla, davem, edumazet, kuba, pabeni, netdev,
	linux-kernel

octep_get_link_status() can fail because send mbox message failed, then
octep_get_link_status() will return ret less than 0. Excute octep_link_up()
as long as ret is not equal to 0 in octep_open() now. That is not correct.

The value type of link.state is enum octep_ctrl_net_state. Positive value
represents up. Excute octep_link_up() when ret is bigger than 0.

Fixes: 862cd659a6fb ("octeon_ep: Add driver framework and device initialization")
Signed-off-by: Ziyang Xuan <william.xuanziyang@huawei.com>
---
 drivers/net/ethernet/marvell/octeon_ep/octep_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/marvell/octeon_ep/octep_main.c b/drivers/net/ethernet/marvell/octeon_ep/octep_main.c
index 7985a748fafe..546bcebf4462 100644
--- a/drivers/net/ethernet/marvell/octeon_ep/octep_main.c
+++ b/drivers/net/ethernet/marvell/octeon_ep/octep_main.c
@@ -521,7 +521,7 @@ static int octep_open(struct net_device *netdev)
 	octep_oq_dbell_init(oct);
 
 	ret = octep_get_link_status(oct);
-	if (ret)
+	if (ret > 0)
 		octep_link_up(netdev);
 
 	return 0;
-- 
2.25.1


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

* [PATCH net 3/4] octeon_ep: fix potential memory leak in octep_device_setup()
  2022-11-11  7:08 [PATCH net 0/4] octeon_ep: fix several bugs in exception paths Ziyang Xuan
  2022-11-11  7:08 ` [PATCH net 1/4] octeon_ep: delete unnecessary napi rollback under set_queues_err in octep_open() Ziyang Xuan
  2022-11-11  7:08 ` [PATCH net 2/4] octeon_ep: ensure octep_get_link_status() successfully before octep_link_up() Ziyang Xuan
@ 2022-11-11  7:09 ` Ziyang Xuan
  2022-11-11  7:09 ` [PATCH net 4/4] octeon_ep: ensure get mac address successfully before eth_hw_addr_set() Ziyang Xuan
  2022-11-14 11:20 ` [PATCH net 0/4] octeon_ep: fix several bugs in exception paths patchwork-bot+netdevbpf
  4 siblings, 0 replies; 6+ messages in thread
From: Ziyang Xuan @ 2022-11-11  7:09 UTC (permalink / raw)
  To: vburru, aayarekar, sburla, davem, edumazet, kuba, pabeni, netdev,
	linux-kernel

When occur unsupported_dev and mbox init errors, it did not free oct->conf
and iounmap() oct->mmio[i].hw_addr. That would trigger memory leak problem.
Add kfree() for oct->conf and iounmap() for oct->mmio[i].hw_addr under
unsupported_dev and mbox init errors to fix the problem.

Fixes: 862cd659a6fb ("octeon_ep: Add driver framework and device initialization")
Signed-off-by: Ziyang Xuan <william.xuanziyang@huawei.com>
---
 drivers/net/ethernet/marvell/octeon_ep/octep_main.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/marvell/octeon_ep/octep_main.c b/drivers/net/ethernet/marvell/octeon_ep/octep_main.c
index 546bcebf4462..53f288c32238 100644
--- a/drivers/net/ethernet/marvell/octeon_ep/octep_main.c
+++ b/drivers/net/ethernet/marvell/octeon_ep/octep_main.c
@@ -956,7 +956,7 @@ int octep_device_setup(struct octep_device *oct)
 	ret = octep_ctrl_mbox_init(ctrl_mbox);
 	if (ret) {
 		dev_err(&pdev->dev, "Failed to initialize control mbox\n");
-		return -1;
+		goto unsupported_dev;
 	}
 	oct->ctrl_mbox_ifstats_offset = OCTEP_CTRL_MBOX_SZ(ctrl_mbox->h2fq.elem_sz,
 							   ctrl_mbox->h2fq.elem_cnt,
@@ -966,6 +966,10 @@ int octep_device_setup(struct octep_device *oct)
 	return 0;
 
 unsupported_dev:
+	for (i = 0; i < OCTEP_MMIO_REGIONS; i++)
+		iounmap(oct->mmio[i].hw_addr);
+
+	kfree(oct->conf);
 	return -1;
 }
 
-- 
2.25.1


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

* [PATCH net 4/4] octeon_ep: ensure get mac address successfully before eth_hw_addr_set()
  2022-11-11  7:08 [PATCH net 0/4] octeon_ep: fix several bugs in exception paths Ziyang Xuan
                   ` (2 preceding siblings ...)
  2022-11-11  7:09 ` [PATCH net 3/4] octeon_ep: fix potential memory leak in octep_device_setup() Ziyang Xuan
@ 2022-11-11  7:09 ` Ziyang Xuan
  2022-11-14 11:20 ` [PATCH net 0/4] octeon_ep: fix several bugs in exception paths patchwork-bot+netdevbpf
  4 siblings, 0 replies; 6+ messages in thread
From: Ziyang Xuan @ 2022-11-11  7:09 UTC (permalink / raw)
  To: vburru, aayarekar, sburla, davem, edumazet, kuba, pabeni, netdev,
	linux-kernel

octep_get_mac_addr() can fail because send mbox message failed. If this
happens, octep_dev->mac_addr will be zero. It should not continue to
initialize. Add exception handling for octep_get_mac_addr() to fix it.

Fixes: 862cd659a6fb ("octeon_ep: Add driver framework and device initialization")
Signed-off-by: Ziyang Xuan <william.xuanziyang@huawei.com>
---
 drivers/net/ethernet/marvell/octeon_ep/octep_main.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/marvell/octeon_ep/octep_main.c b/drivers/net/ethernet/marvell/octeon_ep/octep_main.c
index 53f288c32238..b45dd7f04e21 100644
--- a/drivers/net/ethernet/marvell/octeon_ep/octep_main.c
+++ b/drivers/net/ethernet/marvell/octeon_ep/octep_main.c
@@ -1072,7 +1072,11 @@ static int octep_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	netdev->max_mtu = OCTEP_MAX_MTU;
 	netdev->mtu = OCTEP_DEFAULT_MTU;
 
-	octep_get_mac_addr(octep_dev, octep_dev->mac_addr);
+	err = octep_get_mac_addr(octep_dev, octep_dev->mac_addr);
+	if (err) {
+		dev_err(&pdev->dev, "Failed to get mac address\n");
+		goto register_dev_err;
+	}
 	eth_hw_addr_set(netdev, octep_dev->mac_addr);
 
 	err = register_netdev(netdev);
-- 
2.25.1


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

* Re: [PATCH net 0/4] octeon_ep: fix several bugs in exception paths
  2022-11-11  7:08 [PATCH net 0/4] octeon_ep: fix several bugs in exception paths Ziyang Xuan
                   ` (3 preceding siblings ...)
  2022-11-11  7:09 ` [PATCH net 4/4] octeon_ep: ensure get mac address successfully before eth_hw_addr_set() Ziyang Xuan
@ 2022-11-14 11:20 ` patchwork-bot+netdevbpf
  4 siblings, 0 replies; 6+ messages in thread
From: patchwork-bot+netdevbpf @ 2022-11-14 11:20 UTC (permalink / raw)
  To: Ziyang Xuan
  Cc: vburru, aayarekar, sburla, davem, edumazet, kuba, pabeni, netdev,
	linux-kernel

Hello:

This series was applied to netdev/net.git (master)
by David S. Miller <davem@davemloft.net>:

On Fri, 11 Nov 2022 15:08:01 +0800 you wrote:
> Find several obvious bugs during code review in exception paths. Provide
> this patchset to fix them. Not tested, just compiled.
> 
> Ziyang Xuan (4):
>   octeon_ep: delete unnecessary napi rollback under set_queues_err in
>     octep_open()
>   octeon_ep: ensure octep_get_link_status() successfully before
>     octep_link_up()
>   octeon_ep: fix potential memory leak in octep_device_setup()
>   octeon_ep: ensure get mac address successfully before
>     eth_hw_addr_set()
> 
> [...]

Here is the summary with links:
  - [net,1/4] octeon_ep: delete unnecessary napi rollback under set_queues_err in octep_open()
    https://git.kernel.org/netdev/net/c/298b83e180d5
  - [net,2/4] octeon_ep: ensure octep_get_link_status() successfully before octep_link_up()
    https://git.kernel.org/netdev/net/c/9d3ff7131877
  - [net,3/4] octeon_ep: fix potential memory leak in octep_device_setup()
    https://git.kernel.org/netdev/net/c/e4041be97b15
  - [net,4/4] octeon_ep: ensure get mac address successfully before eth_hw_addr_set()
    https://git.kernel.org/netdev/net/c/848ffce2f0c9

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] 6+ messages in thread

end of thread, other threads:[~2022-11-14 11:25 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-11  7:08 [PATCH net 0/4] octeon_ep: fix several bugs in exception paths Ziyang Xuan
2022-11-11  7:08 ` [PATCH net 1/4] octeon_ep: delete unnecessary napi rollback under set_queues_err in octep_open() Ziyang Xuan
2022-11-11  7:08 ` [PATCH net 2/4] octeon_ep: ensure octep_get_link_status() successfully before octep_link_up() Ziyang Xuan
2022-11-11  7:09 ` [PATCH net 3/4] octeon_ep: fix potential memory leak in octep_device_setup() Ziyang Xuan
2022-11-11  7:09 ` [PATCH net 4/4] octeon_ep: ensure get mac address successfully before eth_hw_addr_set() Ziyang Xuan
2022-11-14 11:20 ` [PATCH net 0/4] octeon_ep: fix several bugs in exception paths 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

Powered by JetHome