drm/i915: Fix memleak in runtime wakeref tracking

If we untrack wakerefs, the actual count may reach zero.
However the krealloced owners array is still there and
needs to be taken care of. Free the owners unconditionally
to fix the leak.

Fixes: bd780f37a3 ("drm/i915: Track all held rpm wakerefs")
Reported-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
Cc: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Link: https://patchwork.freedesktop.org/patch/msgid/20190701104442.9319-1-mika.kuoppala@linux.intel.com
This commit is contained in:
Mika Kuoppala 2019-07-01 13:44:42 +03:00 committed by Chris Wilson
parent 3fe0107e45
commit c5f846eed2
1 changed files with 4 additions and 6 deletions

View File

@ -221,13 +221,11 @@ __untrack_all_wakerefs(struct intel_runtime_pm_debug *debug,
static void
dump_and_free_wakeref_tracking(struct intel_runtime_pm_debug *debug)
{
struct drm_printer p;
if (debug->count) {
struct drm_printer p = drm_debug_printer("i915");
if (!debug->count)
return;
p = drm_debug_printer("i915");
__print_intel_runtime_pm_wakeref(&p, debug);
__print_intel_runtime_pm_wakeref(&p, debug);
}
kfree(debug->owners);
}