Message ID | 20190701104442.9319-1-mika.kuoppala@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [CI] drm/i915: Fix memleak in runtime wakeref tracking | expand |
Quoting Mika Kuoppala (2019-07-01 11:44:42) > 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: bd780f37a361 ("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> And pushed so that we can rule out any undue influence elsewhere in CI. Thanks for catching my mistake, -Chris
diff --git a/drivers/gpu/drm/i915/intel_runtime_pm.c b/drivers/gpu/drm/i915/intel_runtime_pm.c index 502c54428570..8d1aebc3e857 100644 --- a/drivers/gpu/drm/i915/intel_runtime_pm.c +++ b/drivers/gpu/drm/i915/intel_runtime_pm.c @@ -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); }