drm/i915: detach/attach get/put pages symmetry
After performing an operation over the page list for a buffer retrieved by i915_gem_object_get_pages() the pages need to be returned with i915_gem_object_put_pages(). This was not being observed for the phys objects which were thus leaking references to their backing pages. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> CC: Dave Airlie <airlied@gmail.com> Signed-off-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
parent
76cff81ad1
commit
d78b47b9a5
@ -4312,6 +4312,8 @@ void i915_gem_detach_phys_object(struct drm_device *dev,
|
|||||||
}
|
}
|
||||||
drm_clflush_pages(obj_priv->pages, page_count);
|
drm_clflush_pages(obj_priv->pages, page_count);
|
||||||
drm_agp_chipset_flush(dev);
|
drm_agp_chipset_flush(dev);
|
||||||
|
|
||||||
|
i915_gem_object_put_pages(obj);
|
||||||
out:
|
out:
|
||||||
obj_priv->phys_obj->cur_obj = NULL;
|
obj_priv->phys_obj->cur_obj = NULL;
|
||||||
obj_priv->phys_obj = NULL;
|
obj_priv->phys_obj = NULL;
|
||||||
@ -4369,6 +4371,8 @@ i915_gem_attach_phys_object(struct drm_device *dev,
|
|||||||
kunmap_atomic(src, KM_USER0);
|
kunmap_atomic(src, KM_USER0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
i915_gem_object_put_pages(obj);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
out:
|
out:
|
||||||
return ret;
|
return ret;
|
||||||
|
Loading…
Reference in New Issue
Block a user