priv->mainck = NULL;
                } else {
                        dev_err(&pdev->dev, "failed to get baseclk\n");
-                       return PTR_ERR(priv->mainck);
+                       ret = PTR_ERR(priv->mainck);
+                       goto sdhci_pltfm_free;
                }
        }
 
        priv->hclock = devm_clk_get(&pdev->dev, "hclock");
        if (IS_ERR(priv->hclock)) {
                dev_err(&pdev->dev, "failed to get hclock\n");
-               return PTR_ERR(priv->hclock);
+               ret = PTR_ERR(priv->hclock);
+               goto sdhci_pltfm_free;
        }
 
        priv->gck = devm_clk_get(&pdev->dev, "multclk");
        if (IS_ERR(priv->gck)) {
                dev_err(&pdev->dev, "failed to get multclk\n");
-               return PTR_ERR(priv->gck);
+               ret = PTR_ERR(priv->gck);
+               goto sdhci_pltfm_free;
        }
 
        ret = sdhci_at91_set_clks_presets(&pdev->dev);