pcmcia: soc_common: Handle return value of clk_prepare_enable
authorArvind Yadav <arvind.yadav.cs@gmail.com>
Thu, 1 Jun 2017 10:47:10 +0000 (16:17 +0530)
committerDominik Brodowski <linux@dominikbrodowski.net>
Wed, 24 Jan 2018 18:24:39 +0000 (19:24 +0100)
clk_prepare_enable() can fail here and we must check its return value.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
CC: Russell King <rmk+kernel@armlinux.org.uk>
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
drivers/pcmcia/soc_common.c

index 764650eb8897995a55ccc7dc3aaf20c210b53199..c5f2344c189badcea4f92dbbf4bf497dd2d64796 100644 (file)
@@ -191,12 +191,16 @@ static int soc_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
 {
        int ret = 0, i;
 
-       clk_prepare_enable(skt->clk);
+       ret = clk_prepare_enable(skt->clk);
+       if (ret)
+               return ret;
 
        if (skt->ops->hw_init) {
                ret = skt->ops->hw_init(skt);
-               if (ret)
+               if (ret) {
+                       clk_disable_unprepare(skt->clk);
                        return ret;
+               }
        }
 
        for (i = 0; i < ARRAY_SIZE(skt->stat); i++) {