CHROMIUM: MALI: Fix GPU kernel memory leak issue

Fix GPU kernel memory leak issue while probe deferral
BUG=b:123484513
Test=emerge-kukui chromeos-kernel-4_19

Change-Id: I562b01dda526fbac71eeecfa82c90086731f8872
Signed-off-by: Nick Fan <Nick.Fan@mediatek.com>
Reviewed-on: https://chromium-review.googlesource.com/1436795
Commit-Ready: CK HU <ck.hu@mediatek.com>
Tested-by: CK HU <ck.hu@mediatek.com>
Reviewed-by: Nick Fan <nick.fan@mediatek.corp-partner.google.com>
Reviewed-by: Nicolas Boichat <drinkcat@chromium.org>
diff --git a/drivers/gpu/arm/midgard/platform/mediatek/mali_kbase_runtime_pm.c b/drivers/gpu/arm/midgard/platform/mediatek/mali_kbase_runtime_pm.c
index 7e746c5..69bb2ce 100644
--- a/drivers/gpu/arm/midgard/platform/mediatek/mali_kbase_runtime_pm.c
+++ b/drivers/gpu/arm/midgard/platform/mediatek/mali_kbase_runtime_pm.c
@@ -320,7 +320,7 @@
 
 	err = mali_mfgsys_init(kbdev, mfg);
 	if (err)
-		return err;
+		goto platform_init_err;
 
 	kbdev->platform_context = mfg;
 	pm_runtime_enable(kbdev->dev);
@@ -328,23 +328,27 @@
 	err = clk_set_parent(mfg->clk_mux, mfg->clk_sub_parent);
 	if (err) {
 		dev_err(kbdev->dev, "Failed to select sub clock src\n");
-		return err;
+		goto platform_init_err;
 	}
 
 	err = clk_set_rate(mfg->clk_main_parent, GPU_FREQ_KHZ_MAX * 1000);
 	if (err) {
 		dev_err(kbdev->dev, "Failed to set clock %d kHz\n",
 				GPU_FREQ_KHZ_MAX);
-		return err;
+		goto platform_init_err;
 	}
 
 	err = clk_set_parent(mfg->clk_mux, mfg->clk_main_parent);
 	if (err) {
 		dev_err(kbdev->dev, "Failed to select main clock src\n");
-		return err;
+		goto platform_init_err;
 	}
 
 	return 0;
+
+platform_init_err:
+	kfree(mfg);
+	return err;
 }
 
 static void platform_term(struct kbase_device *kbdev)