diff options
| -rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 0c07a755b3a3..7edb5b9d5792 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c | |||
| @@ -2267,8 +2267,6 @@ i915_gem_object_get_fence_reg(struct drm_gem_object *obj) | |||
| 2267 | fence_list) { | 2267 | fence_list) { |
| 2268 | old_obj = old_obj_priv->obj; | 2268 | old_obj = old_obj_priv->obj; |
| 2269 | 2269 | ||
| 2270 | reg = &dev_priv->fence_regs[old_obj_priv->fence_reg]; | ||
| 2271 | |||
| 2272 | if (old_obj_priv->pin_count) | 2270 | if (old_obj_priv->pin_count) |
| 2273 | continue; | 2271 | continue; |
| 2274 | 2272 | ||
| @@ -2290,8 +2288,11 @@ i915_gem_object_get_fence_reg(struct drm_gem_object *obj) | |||
| 2290 | */ | 2288 | */ |
| 2291 | i915_gem_object_flush_gpu_write_domain(old_obj); | 2289 | i915_gem_object_flush_gpu_write_domain(old_obj); |
| 2292 | ret = i915_gem_object_wait_rendering(old_obj); | 2290 | ret = i915_gem_object_wait_rendering(old_obj); |
| 2293 | if (ret != 0) | 2291 | if (ret != 0) { |
| 2292 | drm_gem_object_unreference(old_obj); | ||
| 2294 | return ret; | 2293 | return ret; |
| 2294 | } | ||
| 2295 | |||
| 2295 | break; | 2296 | break; |
| 2296 | } | 2297 | } |
| 2297 | 2298 | ||
| @@ -2299,10 +2300,14 @@ i915_gem_object_get_fence_reg(struct drm_gem_object *obj) | |||
| 2299 | * Zap this virtual mapping so we can set up a fence again | 2300 | * Zap this virtual mapping so we can set up a fence again |
| 2300 | * for this object next time we need it. | 2301 | * for this object next time we need it. |
| 2301 | */ | 2302 | */ |
| 2302 | i915_gem_release_mmap(reg->obj); | 2303 | i915_gem_release_mmap(old_obj); |
| 2304 | |||
| 2303 | i = old_obj_priv->fence_reg; | 2305 | i = old_obj_priv->fence_reg; |
| 2306 | reg = &dev_priv->fence_regs[i]; | ||
| 2307 | |||
| 2304 | old_obj_priv->fence_reg = I915_FENCE_REG_NONE; | 2308 | old_obj_priv->fence_reg = I915_FENCE_REG_NONE; |
| 2305 | list_del_init(&old_obj_priv->fence_list); | 2309 | list_del_init(&old_obj_priv->fence_list); |
| 2310 | |||
| 2306 | drm_gem_object_unreference(old_obj); | 2311 | drm_gem_object_unreference(old_obj); |
| 2307 | } | 2312 | } |
| 2308 | 2313 | ||
