* [PATCH] sfc: Fix an error handling path in efx_pci_probe()
@ 2022-10-29 20:57 Christophe JAILLET
2022-10-31 9:09 ` Martin Habets
2022-11-01 16:30 ` patchwork-bot+netdevbpf
0 siblings, 2 replies; 3+ messages in thread
From: Christophe JAILLET @ 2022-10-29 20:57 UTC (permalink / raw)
To: Edward Cree, Martin Habets, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Jonathan Cooper
Cc: linux-kernel, kernel-janitors, Christophe JAILLET, netdev
If an error occurs after the first kzalloc() the corresponding memory
allocation is never freed.
Add the missing kfree() in the error handling path, as already done in the
remove() function.
Fixes: 7e773594dada ("sfc: Separate efx_nic memory from net_device memory")
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
---
When 7e773594dada was merged, sfc/ef100.c had the same issue.
But it seems to have been fixed in 98ff4c7c8ac7.
---
drivers/net/ethernet/sfc/efx.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/sfc/efx.c b/drivers/net/ethernet/sfc/efx.c
index 054d5ce6029e..0556542d7a6b 100644
--- a/drivers/net/ethernet/sfc/efx.c
+++ b/drivers/net/ethernet/sfc/efx.c
@@ -1059,8 +1059,10 @@ static int efx_pci_probe(struct pci_dev *pci_dev,
/* Allocate and initialise a struct net_device */
net_dev = alloc_etherdev_mq(sizeof(probe_data), EFX_MAX_CORE_TX_QUEUES);
- if (!net_dev)
- return -ENOMEM;
+ if (!net_dev) {
+ rc = -ENOMEM;
+ goto fail0;
+ }
probe_ptr = netdev_priv(net_dev);
*probe_ptr = probe_data;
efx->net_dev = net_dev;
@@ -1132,6 +1134,8 @@ static int efx_pci_probe(struct pci_dev *pci_dev,
WARN_ON(rc > 0);
netif_dbg(efx, drv, efx->net_dev, "initialisation failed. rc=%d\n", rc);
free_netdev(net_dev);
+ fail0:
+ kfree(probe_data);
return rc;
}
--
2.34.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] sfc: Fix an error handling path in efx_pci_probe()
2022-10-29 20:57 [PATCH] sfc: Fix an error handling path in efx_pci_probe() Christophe JAILLET
@ 2022-10-31 9:09 ` Martin Habets
2022-11-01 16:30 ` patchwork-bot+netdevbpf
1 sibling, 0 replies; 3+ messages in thread
From: Martin Habets @ 2022-10-31 9:09 UTC (permalink / raw)
To: Christophe JAILLET
Cc: Edward Cree, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Jonathan Cooper, linux-kernel, kernel-janitors,
netdev
Please specify a branch in the subject.
This patch should go to net.
On Sat, Oct 29, 2022 at 10:57:11PM +0200, Christophe JAILLET wrote:
> If an error occurs after the first kzalloc() the corresponding memory
> allocation is never freed.
>
> Add the missing kfree() in the error handling path, as already done in the
> remove() function.
>
> Fixes: 7e773594dada ("sfc: Separate efx_nic memory from net_device memory")
> Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Acked-by: Martin Habets <habetsm.xilinx@gmail.com>
> ---
> When 7e773594dada was merged, sfc/ef100.c had the same issue.
> But it seems to have been fixed in 98ff4c7c8ac7.
I agree.
> ---
> drivers/net/ethernet/sfc/efx.c | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/ethernet/sfc/efx.c b/drivers/net/ethernet/sfc/efx.c
> index 054d5ce6029e..0556542d7a6b 100644
> --- a/drivers/net/ethernet/sfc/efx.c
> +++ b/drivers/net/ethernet/sfc/efx.c
> @@ -1059,8 +1059,10 @@ static int efx_pci_probe(struct pci_dev *pci_dev,
>
> /* Allocate and initialise a struct net_device */
> net_dev = alloc_etherdev_mq(sizeof(probe_data), EFX_MAX_CORE_TX_QUEUES);
> - if (!net_dev)
> - return -ENOMEM;
> + if (!net_dev) {
> + rc = -ENOMEM;
> + goto fail0;
> + }
> probe_ptr = netdev_priv(net_dev);
> *probe_ptr = probe_data;
> efx->net_dev = net_dev;
> @@ -1132,6 +1134,8 @@ static int efx_pci_probe(struct pci_dev *pci_dev,
> WARN_ON(rc > 0);
> netif_dbg(efx, drv, efx->net_dev, "initialisation failed. rc=%d\n", rc);
> free_netdev(net_dev);
> + fail0:
> + kfree(probe_data);
> return rc;
> }
>
> --
> 2.34.1
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] sfc: Fix an error handling path in efx_pci_probe()
2022-10-29 20:57 [PATCH] sfc: Fix an error handling path in efx_pci_probe() Christophe JAILLET
2022-10-31 9:09 ` Martin Habets
@ 2022-11-01 16:30 ` patchwork-bot+netdevbpf
1 sibling, 0 replies; 3+ messages in thread
From: patchwork-bot+netdevbpf @ 2022-11-01 16:30 UTC (permalink / raw)
To: Christophe JAILLET
Cc: ecree.xilinx, habetsm.xilinx, davem, edumazet, kuba, pabeni,
jonathan.s.cooper, linux-kernel, kernel-janitors, netdev
Hello:
This patch was applied to netdev/net.git (master)
by Jakub Kicinski <kuba@kernel.org>:
On Sat, 29 Oct 2022 22:57:11 +0200 you wrote:
> If an error occurs after the first kzalloc() the corresponding memory
> allocation is never freed.
>
> Add the missing kfree() in the error handling path, as already done in the
> remove() function.
>
> Fixes: 7e773594dada ("sfc: Separate efx_nic memory from net_device memory")
> Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
>
> [...]
Here is the summary with links:
- sfc: Fix an error handling path in efx_pci_probe()
https://git.kernel.org/netdev/net/c/6c412da54c80
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] 3+ messages in thread
end of thread, other threads:[~2022-11-01 16:30 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-10-29 20:57 [PATCH] sfc: Fix an error handling path in efx_pci_probe() Christophe JAILLET
2022-10-31 9:09 ` Martin Habets
2022-11-01 16: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