Blob Blame History Raw
From 0de98709896d9c02ce3121ec3afb524253a5853f Mon Sep 17 00:00:00 2001
From: "Zhou, Wenjia" <zhiyuan_zhu@htc.com>
Date: Tue, 4 Jul 2017 15:47:00 +0800
Subject: [PATCH] drm/i915/gvt: Fix a memory leak in intel_gvt_init_gtt()
Git-commit: 0de98709896d9c02ce3121ec3afb524253a5853f
Patch-mainline: v4.13-rc1
References: FATE#322643 bsc#1055900

It will causes memory leak, if the function setup_spt_oos() fail,
in the function intel_gvt_init_gtt(),
which allocated by get_zeroed_page() and mapped by dma_map_page().

Unmap and free the page,  after STP oos initialize fail,
it will fix this issue.

Signed-off-by: Zhou, Wenjia <zhiyuan_zhu@htc.com>
Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
Acked-by: Takashi Iwai <tiwai@suse.de>

---
 drivers/gpu/drm/i915/gvt/gtt.c |    2 ++
 1 file changed, 2 insertions(+)

--- a/drivers/gpu/drm/i915/gvt/gtt.c
+++ b/drivers/gpu/drm/i915/gvt/gtt.c
@@ -2259,6 +2259,8 @@ int intel_gvt_init_gtt(struct intel_gvt
 		ret = setup_spt_oos(gvt);
 		if (ret) {
 			gvt_err("fail to initialize SPT oos\n");
+			dma_unmap_page(dev, daddr, 4096, PCI_DMA_BIDIRECTIONAL);
+			__free_page(gvt->gtt.scratch_ggtt_page);
 			return ret;
 		}
 	}