Netdev Archive on lore.kernel.org
help / color / mirror / Atom feed
* [net PATCH] octeontx2-pf: Fix interface down flag on error
@ 2021-07-25 7:59 Geetha sowjanya
2021-07-25 8:30 ` patchwork-bot+netdevbpf
0 siblings, 1 reply; 2+ messages in thread
From: Geetha sowjanya @ 2021-07-25 7:59 UTC (permalink / raw)
To: netdev, linux-kernel
Cc: lcherian, tduszynski, kuba, davem, hkelam, sbhatta, gakula, sgoutham
In the existing code while changing the number of TX/RX
queues using ethtool the PF/VF interface resources are
freed and reallocated (otx2_stop and otx2_open is called)
if the device is in running state. If any resource allocation
fails in otx2_open, driver free already allocated resources
and return. But again, when the number of queues changes
as the device state still running oxt2_stop is called.
In which we try to free already freed resources leading
to driver crash.
This patch fixes the issue by setting the INTF_DOWN flag on
error and free the resources in otx2_stop only if the flag is
not set.
Fixes: 50fe6c02e5ad ("octeontx2-pf: Register and handle link notifications")
Signed-off-by: Geetha sowjanya <gakula@marvell.com>
Signed-off-by: Sunil Kovvuri Goutham <Sunil.Goutham@cavium.com>
---
drivers/net/ethernet/marvell/octeontx2/nic/otx2_ethtool.c | 7 +++----
drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c | 5 +++++
2 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_ethtool.c b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_ethtool.c
index 8df748e0677b..b906a0eb6e0d 100644
--- a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_ethtool.c
+++ b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_ethtool.c
@@ -298,15 +298,14 @@ static int otx2_set_channels(struct net_device *dev,
err = otx2_set_real_num_queues(dev, channel->tx_count,
channel->rx_count);
if (err)
- goto fail;
+ return err;
pfvf->hw.rx_queues = channel->rx_count;
pfvf->hw.tx_queues = channel->tx_count;
pfvf->qset.cq_cnt = pfvf->hw.tx_queues + pfvf->hw.rx_queues;
-fail:
if (if_up)
- dev->netdev_ops->ndo_open(dev);
+ err = dev->netdev_ops->ndo_open(dev);
netdev_info(dev, "Setting num Tx rings to %d, Rx rings to %d success\n",
pfvf->hw.tx_queues, pfvf->hw.rx_queues);
@@ -410,7 +409,7 @@ static int otx2_set_ringparam(struct net_device *netdev,
qs->rqe_cnt = rx_count;
if (if_up)
- netdev->netdev_ops->ndo_open(netdev);
+ return netdev->netdev_ops->ndo_open(netdev);
return 0;
}
diff --git a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c
index f300b807a85b..2c24944a4dba 100644
--- a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c
+++ b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c
@@ -1662,6 +1662,7 @@ int otx2_open(struct net_device *netdev)
err_tx_stop_queues:
netif_tx_stop_all_queues(netdev);
netif_carrier_off(netdev);
+ pf->flags |= OTX2_FLAG_INTF_DOWN;
err_free_cints:
otx2_free_cints(pf, qidx);
vec = pci_irq_vector(pf->pdev,
@@ -1689,6 +1690,10 @@ int otx2_stop(struct net_device *netdev)
struct otx2_rss_info *rss;
int qidx, vec, wrk;
+ /* If the DOWN flag is set resources are already freed */
+ if (pf->flags & OTX2_FLAG_INTF_DOWN)
+ return 0;
+
netif_carrier_off(netdev);
netif_tx_stop_all_queues(netdev);
--
2.17.1
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [net PATCH] octeontx2-pf: Fix interface down flag on error
2021-07-25 7:59 [net PATCH] octeontx2-pf: Fix interface down flag on error Geetha sowjanya
@ 2021-07-25 8:30 ` patchwork-bot+netdevbpf
0 siblings, 0 replies; 2+ messages in thread
From: patchwork-bot+netdevbpf @ 2021-07-25 8:30 UTC (permalink / raw)
To: Geetha sowjanya
Cc: netdev, linux-kernel, lcherian, tduszynski, kuba, davem, hkelam,
sbhatta, sgoutham
Hello:
This patch was applied to netdev/net.git (refs/heads/master):
On Sun, 25 Jul 2021 13:29:03 +0530 you wrote:
> In the existing code while changing the number of TX/RX
> queues using ethtool the PF/VF interface resources are
> freed and reallocated (otx2_stop and otx2_open is called)
> if the device is in running state. If any resource allocation
> fails in otx2_open, driver free already allocated resources
> and return. But again, when the number of queues changes
> as the device state still running oxt2_stop is called.
> In which we try to free already freed resources leading
> to driver crash.
> This patch fixes the issue by setting the INTF_DOWN flag on
> error and free the resources in otx2_stop only if the flag is
> not set.
>
> [...]
Here is the summary with links:
- [net] octeontx2-pf: Fix interface down flag on error
https://git.kernel.org/netdev/net/c/69f0aeb13bb5
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] 2+ messages in thread
end of thread, other threads:[~2021-07-25 8:30 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-25 7:59 [net PATCH] octeontx2-pf: Fix interface down flag on error Geetha sowjanya
2021-07-25 8:30 ` 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;
as well as URLs for NNTP newsgroup(s).