Message ID | f52bdf2b-d45f-7db4-b533-d96dd3b4f6bf@users.sourceforge.net |
---|---|
State | Rejected, archived |
Delegated to: | David Miller |
Headers | show |
Series | phylink: Use common error handling code in phylink_create() | expand |
On 10/28/2017 01:00 PM, SF Markus Elfring wrote: > From: Markus Elfring <elfring@users.sourceforge.net> > Date: Sat, 28 Oct 2017 21:48:31 +0200 > > * Add a jump target so that a bit of exception handling can be better > reused at the end of this function. > > * Adjust three condition checks. > > This issue was detected by using the Coccinelle software. > > Signed-off-by: Markus Elfring <elfring@users.sourceforge.net> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
On Sat, Oct 28, 2017 at 10:00:33PM +0200, SF Markus Elfring wrote: > From: Markus Elfring <elfring@users.sourceforge.net> > Date: Sat, 28 Oct 2017 21:48:31 +0200 > > * Add a jump target so that a bit of exception handling can be better > reused at the end of this function. > > * Adjust three condition checks. > > This issue was detected by using the Coccinelle software. > > Signed-off-by: Markus Elfring <elfring@users.sourceforge.net> Acked-by: Russell King <rmk+kernel@armlinux.org.uk> Thanks. > --- > drivers/net/phy/phylink.c | 22 ++++++++++------------ > 1 file changed, 10 insertions(+), 12 deletions(-) > > diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c > index bcb4755bcd95..67b19c13f405 100644 > --- a/drivers/net/phy/phylink.c > +++ b/drivers/net/phy/phylink.c > @@ -533,26 +533,24 @@ struct phylink *phylink_create(struct net_device *ndev, struct device_node *np, > phylink_validate(pl, pl->supported, &pl->link_config); > > ret = phylink_parse_mode(pl, np); > - if (ret < 0) { > - kfree(pl); > - return ERR_PTR(ret); > - } > + if (ret) > + goto free_link; > > if (pl->link_an_mode == MLO_AN_FIXED) { > ret = phylink_parse_fixedlink(pl, np); > - if (ret < 0) { > - kfree(pl); > - return ERR_PTR(ret); > - } > + if (ret) > + goto free_link; > } > > ret = phylink_register_sfp(pl, np); > - if (ret < 0) { > - kfree(pl); > - return ERR_PTR(ret); > - } > + if (ret) > + goto free_link; > > return pl; > + > +free_link: > + kfree(pl); > + return ERR_PTR(ret); > } > EXPORT_SYMBOL_GPL(phylink_create); > > -- > 2.14.3 >
diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c index bcb4755bcd95..67b19c13f405 100644 --- a/drivers/net/phy/phylink.c +++ b/drivers/net/phy/phylink.c @@ -533,26 +533,24 @@ struct phylink *phylink_create(struct net_device *ndev, struct device_node *np, phylink_validate(pl, pl->supported, &pl->link_config); ret = phylink_parse_mode(pl, np); - if (ret < 0) { - kfree(pl); - return ERR_PTR(ret); - } + if (ret) + goto free_link; if (pl->link_an_mode == MLO_AN_FIXED) { ret = phylink_parse_fixedlink(pl, np); - if (ret < 0) { - kfree(pl); - return ERR_PTR(ret); - } + if (ret) + goto free_link; } ret = phylink_register_sfp(pl, np); - if (ret < 0) { - kfree(pl); - return ERR_PTR(ret); - } + if (ret) + goto free_link; return pl; + +free_link: + kfree(pl); + return ERR_PTR(ret); } EXPORT_SYMBOL_GPL(phylink_create);