From: Fabio Estevam <festevam@gmail.com>
To: davem@davemloft.net
Cc: vz@mleia.com, netdev@vger.kernel.org,
Fabio Estevam <fabio.estevam@nxp.com>
Subject: [PATCH] net: lpc_eth: Check clk_prepare_enable() error
Date: Mon, 22 Aug 2016 23:01:18 -0300 [thread overview]
Message-ID: <1471917678-9130-1-git-send-email-festevam@gmail.com> (raw)
From: Fabio Estevam <fabio.estevam@nxp.com>
clk_prepare_enable() may fail, so we should better check its return
value and propagate it in the case of failure.
Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com>
---
drivers/net/ethernet/nxp/lpc_eth.c | 29 ++++++++++++++++++++++-------
1 file changed, 22 insertions(+), 7 deletions(-)
diff --git a/drivers/net/ethernet/nxp/lpc_eth.c b/drivers/net/ethernet/nxp/lpc_eth.c
index 4d4ecba..7c796f7 100644
--- a/drivers/net/ethernet/nxp/lpc_eth.c
+++ b/drivers/net/ethernet/nxp/lpc_eth.c
@@ -475,12 +475,19 @@ static void __lpc_get_mac(struct netdata_local *pldat, u8 *mac)
mac[5] = tmp >> 8;
}
-static void __lpc_eth_clock_enable(struct netdata_local *pldat, bool enable)
+static int __lpc_eth_clock_enable(struct netdata_local *pldat, bool enable)
{
- if (enable)
- clk_prepare_enable(pldat->clk);
- else
+ int ret;
+
+ if (enable) {
+ ret = clk_prepare_enable(pldat->clk);
+ if (ret)
+ return ret;
+ } else {
clk_disable_unprepare(pldat->clk);
+ }
+
+ return 0;
}
static void __lpc_params_setup(struct netdata_local *pldat)
@@ -1039,6 +1046,7 @@ static int lpc_eth_close(struct net_device *ndev)
{
unsigned long flags;
struct netdata_local *pldat = netdev_priv(ndev);
+ int ret;
if (netif_msg_ifdown(pldat))
dev_dbg(&pldat->pdev->dev, "shutting down %s\n", ndev->name);
@@ -1056,7 +1064,9 @@ static int lpc_eth_close(struct net_device *ndev)
writel(0, LPC_ENET_MAC2(pldat->net_base));
spin_unlock_irqrestore(&pldat->lock, flags);
- __lpc_eth_clock_enable(pldat, false);
+ ret = __lpc_eth_clock_enable(pldat, false);
+ if (ret)
+ return ret;
return 0;
}
@@ -1197,11 +1207,14 @@ static int lpc_eth_ioctl(struct net_device *ndev, struct ifreq *req, int cmd)
static int lpc_eth_open(struct net_device *ndev)
{
struct netdata_local *pldat = netdev_priv(ndev);
+ int ret;
if (netif_msg_ifup(pldat))
dev_dbg(&pldat->pdev->dev, "enabling %s\n", ndev->name);
- __lpc_eth_clock_enable(pldat, true);
+ ret = __lpc_eth_clock_enable(pldat, true);
+ if (ret)
+ return ret;
/* Suspended PHY makes LPC ethernet core block, so resume now */
phy_resume(ndev->phydev);
@@ -1320,7 +1333,9 @@ static int lpc_eth_drv_probe(struct platform_device *pdev)
}
/* Enable network clock */
- __lpc_eth_clock_enable(pldat, true);
+ ret = __lpc_eth_clock_enable(pldat, true);
+ if (ret)
+ goto err_out_free_dev;
/* Map IO space */
pldat->net_base = ioremap(res->start, resource_size(res));
--
1.9.1
next reply other threads:[~2016-08-23 2:02 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-23 2:01 Fabio Estevam [this message]
2016-08-23 7:19 ` [PATCH] net: lpc_eth: Check clk_prepare_enable() error Vladimir Zapolskiy
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1471917678-9130-1-git-send-email-festevam@gmail.com \
--to=festevam@gmail.com \
--cc=davem@davemloft.net \
--cc=fabio.estevam@nxp.com \
--cc=netdev@vger.kernel.org \
--cc=vz@mleia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.