Message ID | d8593ae867b24c79063646e36f9b18b0790107cb.1684575975.git.christophe.jaillet@wanadoo.fr (mailing list archive) |
---|---|
State | Accepted |
Commit | 640bf95b2c7c2981fb471acdafbd3e0458f8390d |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net] 3c589_cs: Fix an error handling path in tc589_probe() | expand |
On Sat, May 20, 2023 at 11:48:55AM +0200, Christophe JAILLET wrote: > Should tc589_config() fail, some resources need to be released as already > done in the remove function. > > Fixes: 15b99ac17295 ("[PATCH] pcmcia: add return value to _config() functions") That commit is probably going back far enough, but I actually suspect the problem has been there since the beginning of git history. > Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> Reviewed-by: Simon Horman <simon.horman@corigine.com>
Le 22/05/2023 à 14:34, Simon Horman a écrit : > On Sat, May 20, 2023 at 11:48:55AM +0200, Christophe JAILLET wrote: >> Should tc589_config() fail, some resources need to be released as already >> done in the remove function. >> >> Fixes: 15b99ac17295 ("[PATCH] pcmcia: add return value to _config() functions") > > That commit is probably going back far enough, but I actually > suspect the problem has been there since the beginning of git history. In fact, before that commit, the probe was always returning 0, so there was no need for an error handling path. FYI, commit 15b99ac17295 ("[PATCH] pcmcia: add return value to _config() functions") messed up many drivers for the same reason. I sent a few patches to see if there was an interest to fix these (really) old drivers, most linked with pcmcia which seems to slowly be removed from the kernel. So I'm a bit unsure if fixing it really matters. Let see if I collect some other R-b tags for the other patches. CJ > >> Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> > > Reviewed-by: Simon Horman <simon.horman@corigine.com> > > >
Hello: This patch was applied to netdev/net.git (main) by Jakub Kicinski <kuba@kernel.org>: On Sat, 20 May 2023 11:48:55 +0200 you wrote: > Should tc589_config() fail, some resources need to be released as already > done in the remove function. > > Fixes: 15b99ac17295 ("[PATCH] pcmcia: add return value to _config() functions") > Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> > --- > drivers/net/ethernet/3com/3c589_cs.c | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-) Here is the summary with links: - [net] 3c589_cs: Fix an error handling path in tc589_probe() https://git.kernel.org/netdev/net/c/640bf95b2c7c You are awesome, thank you!
On Mon, May 22, 2023 at 07:18:29PM +0200, Christophe JAILLET wrote: > Le 22/05/2023 à 14:34, Simon Horman a écrit : > > On Sat, May 20, 2023 at 11:48:55AM +0200, Christophe JAILLET wrote: > > > Should tc589_config() fail, some resources need to be released as already > > > done in the remove function. > > > > > > Fixes: 15b99ac17295 ("[PATCH] pcmcia: add return value to _config() functions") > > > > That commit is probably going back far enough, but I actually > > suspect the problem has been there since the beginning of git history. > > In fact, before that commit, the probe was always returning 0, so there was > no need for an error handling path. Sure. But resources could still leak, as far as I can tell. Adding a return value provided a mechanism to fix such leaks. But wasn't done (until now). Just my 2c worth. > FYI, commit 15b99ac17295 ("[PATCH] pcmcia: add return value to _config() > functions") messed up many drivers for the same reason. > I sent a few patches to see if there was an interest to fix these (really) > old drivers, most linked with pcmcia which seems to slowly be removed from > the kernel. > > So I'm a bit unsure if fixing it really matters. > Let see if I collect some other R-b tags for the other patches. Yes, let's see.
diff --git a/drivers/net/ethernet/3com/3c589_cs.c b/drivers/net/ethernet/3com/3c589_cs.c index 82f94b1635bf..5267e9dcd87e 100644 --- a/drivers/net/ethernet/3com/3c589_cs.c +++ b/drivers/net/ethernet/3com/3c589_cs.c @@ -195,6 +195,7 @@ static int tc589_probe(struct pcmcia_device *link) { struct el3_private *lp; struct net_device *dev; + int ret; dev_dbg(&link->dev, "3c589_attach()\n"); @@ -218,7 +219,15 @@ static int tc589_probe(struct pcmcia_device *link) dev->ethtool_ops = &netdev_ethtool_ops; - return tc589_config(link); + ret = tc589_config(link); + if (ret) + goto err_free_netdev; + + return 0; + +err_free_netdev: + free_netdev(dev); + return ret; } static void tc589_detach(struct pcmcia_device *link)
Should tc589_config() fail, some resources need to be released as already done in the remove function. Fixes: 15b99ac17295 ("[PATCH] pcmcia: add return value to _config() functions") Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> --- drivers/net/ethernet/3com/3c589_cs.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-)