Commit fdcc789a authored by Mika Kuoppala's avatar Mika Kuoppala Committed by Jani Nikula
Browse files

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: bd780f37 ("drm/i915: Track all held rpm wakerefs")
Reported-by: default avatarJuha-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: default avatarMika Kuoppala <mika.kuoppala@linux.intel.com>
Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Link: https://patchwork.freedesktop.org/patch/msgid/20190701104442.9319-1-mika.kuoppala@linux.intel.com


(cherry picked from commit c5f846ee)
Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
parent cf8f9aa1
Loading
Loading
Loading
Loading
+4 −6
Original line number Original line Diff line number Diff line
@@ -221,13 +221,11 @@ __untrack_all_wakerefs(struct intel_runtime_pm_debug *debug,
static void
static void
dump_and_free_wakeref_tracking(struct intel_runtime_pm_debug *debug)
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);
	kfree(debug->owners);
}
}