drm/i915: Fix syncmap memory leak
authorjsg <jsg@openbsd.org>
Thu, 9 Sep 2021 04:02:53 +0000 (04:02 +0000)
committerjsg <jsg@openbsd.org>
Thu, 9 Sep 2021 04:02:53 +0000 (04:02 +0000)
From Matthew Brost
257ea8a5edc04d5199db83137fbaa24e1de98e9e in linux 5.10.y/5.10.62
a63bcf08f0efb5348105bb8e0e1e8c6671077753 in mainline linux

sys/dev/pci/drm/i915/gt/intel_timeline.c

index b32cf22..ae91f61 100644 (file)
@@ -296,6 +296,14 @@ static void intel_timeline_fini(struct intel_timeline *timeline)
                i915_gem_object_unpin_map(timeline->hwsp_ggtt->obj);
 
        i915_vma_put(timeline->hwsp_ggtt);
+
+       /*
+        * A small race exists between intel_gt_retire_requests_timeout and
+        * intel_timeline_exit which could result in the syncmap not getting
+        * free'd. Rather than work to hard to seal this race, simply cleanup
+        * the syncmap on fini.
+        */
+       i915_syncmap_free(&timeline->sync);
 }
 
 struct intel_timeline *