lkml.org 
[lkml]   [2021]   [May]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.12 111/127] net: stmicro: handle clk_prepare() failure during init
    Date
    From: Anirudh Rayabharam <mail@anirudhrb.com>

    commit 0c32a96d000f260b5ebfabb4145a86ae1cd71847 upstream.

    In case clk_prepare() fails, capture and propagate the error code up the
    stack. If regulator_enable() was called earlier, properly unwind it by
    calling regulator_disable().

    Signed-off-by: Anirudh Rayabharam <mail@anirudhrb.com>
    Cc: David S. Miller <davem@davemloft.net>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20210503115736.2104747-22-gregkh@linuxfoundation.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/net/ethernet/stmicro/stmmac/dwmac-sunxi.c | 8 +++++---
    1 file changed, 5 insertions(+), 3 deletions(-)

    --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-sunxi.c
    +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-sunxi.c
    @@ -30,7 +30,7 @@ struct sunxi_priv_data {
    static int sun7i_gmac_init(struct platform_device *pdev, void *priv)
    {
    struct sunxi_priv_data *gmac = priv;
    - int ret;
    + int ret = 0;

    if (gmac->regulator) {
    ret = regulator_enable(gmac->regulator);
    @@ -50,10 +50,12 @@ static int sun7i_gmac_init(struct platfo
    gmac->clk_enabled = 1;
    } else {
    clk_set_rate(gmac->tx_clk, SUN7I_GMAC_MII_RATE);
    - clk_prepare(gmac->tx_clk);
    + ret = clk_prepare(gmac->tx_clk);
    + if (ret && gmac->regulator)
    + regulator_disable(gmac->regulator);
    }

    - return 0;
    + return ret;
    }

    static void sun7i_gmac_exit(struct platform_device *pdev, void *priv)

    \
     
     \ /
      Last update: 2021-05-24 18:08    [W:4.125 / U:0.104 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site