diff mbox

drm/i915: check vma for error in ggtt_unpin_view

Message ID 1458747584-29772-1-git-send-email-matthew.auld@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Matthew Auld March 23, 2016, 3:39 p.m. UTC
When unpinning a ggtt_view check vma for error, otherwise we may end up
accessing an invalid pointer.

Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Signed-off-by: Matthew Auld <matthew.auld@intel.com>
---
 drivers/gpu/drm/i915/i915_gem.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Joonas Lahtinen March 24, 2016, 2:32 p.m. UTC | #1
On ke, 2016-03-23 at 15:39 +0000, Matthew Auld wrote:
> When unpinning a ggtt_view check vma for error, otherwise we may end up
> accessing an invalid pointer.
> 
> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
> Signed-off-by: Matthew Auld <matthew.auld@intel.com>
> ---
>  drivers/gpu/drm/i915/i915_gem.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> index 8588c83..a8f3378 100644
> --- a/drivers/gpu/drm/i915/i915_gem.c
> +++ b/drivers/gpu/drm/i915/i915_gem.c
> @@ -4319,7 +4319,7 @@ i915_gem_object_ggtt_unpin_view(struct drm_i915_gem_object *obj,
>  {
>  	struct i915_vma *vma = i915_gem_obj_to_ggtt_view(obj, view);
>  
> -	BUG_ON(!vma);
> +	BUG_ON(IS_ERR_OR_NULL(vma));

Nicely spotted.

I discussed this with Tvrtko (CC'd him). I think we could
change i915_gem_obj_to_ggtt_view to BUG_ON(!view) instead of adding the
error handling in all places, as it is after all a programmer error to
provide NULL view.

Regards, Joonas

>  	WARN_ON(vma->pin_count == 0);
>  	WARN_ON(!i915_gem_obj_ggtt_bound_view(obj, view));
>
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 8588c83..a8f3378 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -4319,7 +4319,7 @@  i915_gem_object_ggtt_unpin_view(struct drm_i915_gem_object *obj,
 {
 	struct i915_vma *vma = i915_gem_obj_to_ggtt_view(obj, view);
 
-	BUG_ON(!vma);
+	BUG_ON(IS_ERR_OR_NULL(vma));
 	WARN_ON(vma->pin_count == 0);
 	WARN_ON(!i915_gem_obj_ggtt_bound_view(obj, view));