drm/i915/gvt: fix mem leakage in setup_vgpu_mmio for vgpu reset
authorDu, Changbin <changbin.du@intel.com>
Fri, 11 Nov 2016 02:31:37 +0000 (10:31 +0800)
committerZhenyu Wang <zhenyuw@linux.intel.com>
Mon, 14 Nov 2016 10:06:43 +0000 (18:06 +0800)
Gvt gdrst handler handle_device_reset() invoke function
setup_vgpu_mmio() to reset mmio status. In this case,
the virtual mmio memory has been allocated already. The
new allocation just cause old mmio memory leakage.

Signed-off-by: Du, Changbin <changbin.du@intel.com>
Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
drivers/gpu/drm/i915/gvt/vgpu.c

index 3a15feadc1df67959680c2589715f573cfacd2ee..044125c0f407e8a9a4029009f839c5dc88ae1279 100644 (file)
@@ -46,9 +46,13 @@ int setup_vgpu_mmio(struct intel_vgpu *vgpu)
        struct intel_gvt *gvt = vgpu->gvt;
        const struct intel_gvt_device_info *info = &gvt->device_info;
 
-       vgpu->mmio.vreg = vzalloc(info->mmio_size * 2);
-       if (!vgpu->mmio.vreg)
-               return -ENOMEM;
+       if (vgpu->mmio.vreg)
+               memset(vgpu->mmio.vreg, 0, info->mmio_size * 2);
+       else {
+               vgpu->mmio.vreg = vzalloc(info->mmio_size * 2);
+               if (!vgpu->mmio.vreg)
+                       return -ENOMEM;
+       }
 
        vgpu->mmio.sreg = vgpu->mmio.vreg + info->mmio_size;