Commit d78b47b9 authored by Chris Wilson's avatar Chris Wilson Committed by Eric Anholt

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: default avatarChris Wilson <chris@chris-wilson.co.uk>
CC: Dave Airlie <airlied@gmail.com>
Signed-off-by: default avatarEric Anholt <eric@anholt.net>
parent 76cff81a
...@@ -4312,6 +4312,8 @@ void i915_gem_detach_phys_object(struct drm_device *dev, ...@@ -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, ...@@ -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;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment