diff mbox

drm/i915: fix aliasing_ppgtt leak

Message ID 1470420280-21417-1-git-send-email-matthew.auld@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Matthew Auld Aug. 5, 2016, 6:04 p.m. UTC
In i915_ggtt_cleanup_hw we need to remember to free aliasing_ppgtt. This
fixes the following kmemleak message:

unreferenced object 0xffff880213cca000 (size 8192):
  comm "modprobe", pid 1298, jiffies 4294745402 (age 703.930s)
  hex dump (first 32 bytes):
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
  backtrace:
    [<ffffffff817c808e>] kmemleak_alloc+0x4e/0xb0
    [<ffffffff8121f9c2>] kmem_cache_alloc_trace+0x142/0x1d0
    [<ffffffffa06d11ef>] i915_gem_init_ggtt+0x10f/0x210 [i915]
    [<ffffffffa06d71bb>] i915_gem_init+0x5b/0xd0 [i915]
    [<ffffffffa069749a>] i915_driver_load+0x97a/0x1460 [i915]
    [<ffffffffa06a26ef>] i915_pci_probe+0x4f/0x70 [i915]
    [<ffffffff81423015>] local_pci_probe+0x45/0xa0
    [<ffffffff81424463>] pci_device_probe+0x103/0x150
    [<ffffffff81515e6c>] driver_probe_device+0x22c/0x440
    [<ffffffff81516151>] __driver_attach+0xd1/0xf0
    [<ffffffff8151379c>] bus_for_each_dev+0x6c/0xc0
    [<ffffffff8151555e>] driver_attach+0x1e/0x20
    [<ffffffff81514fa3>] bus_add_driver+0x1c3/0x280
    [<ffffffff81516aa0>] driver_register+0x60/0xe0
    [<ffffffff8142297c>] __pci_register_driver+0x4c/0x50
    [<ffffffffa013605b>] 0xffffffffa013605b

Signed-off-by: Matthew Auld <matthew.auld@intel.com>
---
 drivers/gpu/drm/i915/i915_gem_gtt.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Chris Wilson Aug. 5, 2016, 6:18 p.m. UTC | #1
On Fri, Aug 05, 2016 at 07:04:40PM +0100, Matthew Auld wrote:
> In i915_ggtt_cleanup_hw we need to remember to free aliasing_ppgtt. This
> fixes the following kmemleak message:
> 
> unreferenced object 0xffff880213cca000 (size 8192):
>   comm "modprobe", pid 1298, jiffies 4294745402 (age 703.930s)
>   hex dump (first 32 bytes):
>     00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
>     00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
>   backtrace:
>     [<ffffffff817c808e>] kmemleak_alloc+0x4e/0xb0
>     [<ffffffff8121f9c2>] kmem_cache_alloc_trace+0x142/0x1d0
>     [<ffffffffa06d11ef>] i915_gem_init_ggtt+0x10f/0x210 [i915]
>     [<ffffffffa06d71bb>] i915_gem_init+0x5b/0xd0 [i915]
>     [<ffffffffa069749a>] i915_driver_load+0x97a/0x1460 [i915]
>     [<ffffffffa06a26ef>] i915_pci_probe+0x4f/0x70 [i915]
>     [<ffffffff81423015>] local_pci_probe+0x45/0xa0
>     [<ffffffff81424463>] pci_device_probe+0x103/0x150
>     [<ffffffff81515e6c>] driver_probe_device+0x22c/0x440
>     [<ffffffff81516151>] __driver_attach+0xd1/0xf0
>     [<ffffffff8151379c>] bus_for_each_dev+0x6c/0xc0
>     [<ffffffff8151555e>] driver_attach+0x1e/0x20
>     [<ffffffff81514fa3>] bus_add_driver+0x1c3/0x280
>     [<ffffffff81516aa0>] driver_register+0x60/0xe0
>     [<ffffffff8142297c>] __pci_register_driver+0x4c/0x50
>     [<ffffffffa013605b>] 0xffffffffa013605b
> 

Fixes: b18b6bde300e ("drm/i915/bdw: Free PPGTT struct")
> Signed-off-by: Matthew Auld <matthew.auld@intel.com>

Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
-Chris
Daniel Vetter Aug. 5, 2016, 8:40 p.m. UTC | #2
On Fri, Aug 05, 2016 at 07:18:13PM +0100, Chris Wilson wrote:
> On Fri, Aug 05, 2016 at 07:04:40PM +0100, Matthew Auld wrote:
> > In i915_ggtt_cleanup_hw we need to remember to free aliasing_ppgtt. This
> > fixes the following kmemleak message:
> > 
> > unreferenced object 0xffff880213cca000 (size 8192):
> >   comm "modprobe", pid 1298, jiffies 4294745402 (age 703.930s)
> >   hex dump (first 32 bytes):
> >     00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
> >     00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
> >   backtrace:
> >     [<ffffffff817c808e>] kmemleak_alloc+0x4e/0xb0
> >     [<ffffffff8121f9c2>] kmem_cache_alloc_trace+0x142/0x1d0
> >     [<ffffffffa06d11ef>] i915_gem_init_ggtt+0x10f/0x210 [i915]
> >     [<ffffffffa06d71bb>] i915_gem_init+0x5b/0xd0 [i915]
> >     [<ffffffffa069749a>] i915_driver_load+0x97a/0x1460 [i915]
> >     [<ffffffffa06a26ef>] i915_pci_probe+0x4f/0x70 [i915]
> >     [<ffffffff81423015>] local_pci_probe+0x45/0xa0
> >     [<ffffffff81424463>] pci_device_probe+0x103/0x150
> >     [<ffffffff81515e6c>] driver_probe_device+0x22c/0x440
> >     [<ffffffff81516151>] __driver_attach+0xd1/0xf0
> >     [<ffffffff8151379c>] bus_for_each_dev+0x6c/0xc0
> >     [<ffffffff8151555e>] driver_attach+0x1e/0x20
> >     [<ffffffff81514fa3>] bus_add_driver+0x1c3/0x280
> >     [<ffffffff81516aa0>] driver_register+0x60/0xe0
> >     [<ffffffff8142297c>] __pci_register_driver+0x4c/0x50
> >     [<ffffffffa013605b>] 0xffffffffa013605b
> > 
> 
> Fixes: b18b6bde300e ("drm/i915/bdw: Free PPGTT struct")

Also added cc: stable per dim fixes. Bit overkill, but meh.

> > Signed-off-by: Matthew Auld <matthew.auld@intel.com>
> 
> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>

Queued for -next, thanks for the patch.
-Daniel
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
index 8b4f2f3..18c7c96 100644
--- a/drivers/gpu/drm/i915/i915_gem_gtt.c
+++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
@@ -2797,6 +2797,7 @@  void i915_ggtt_cleanup_hw(struct drm_i915_private *dev_priv)
 		struct i915_hw_ppgtt *ppgtt = dev_priv->mm.aliasing_ppgtt;
 
 		ppgtt->base.cleanup(&ppgtt->base);
+		kfree(ppgtt);
 	}
 
 	i915_gem_cleanup_stolen(&dev_priv->drm);