drm/i915: hold ref on flip object until it completes

This will prevent things from falling over if the user frees the flip
buffer before we complete the flip, since we'll hold an internal
reference.

Reported-by: Kristian Høgsberg <krh@bitplanet.net>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Signed-off-by: Eric Anholt <eric@anholt.net>

authored by

Jesse Barnes and committed by
Eric Anholt
75dfca80 84b79f8d

+3 -1
+3 -1
drivers/gpu/drm/i915/intel_display.c
··· 4094 4094 4095 4095 mutex_lock(&work->dev->struct_mutex); 4096 4096 i915_gem_object_unpin(work->old_fb_obj); 4097 + drm_gem_object_unreference(work->pending_flip_obj); 4097 4098 drm_gem_object_unreference(work->old_fb_obj); 4098 4099 mutex_unlock(&work->dev->struct_mutex); 4099 4100 kfree(work); ··· 4222 4221 return ret; 4223 4222 } 4224 4223 4225 - /* Reference the old fb object for the scheduled work. */ 4224 + /* Reference the objects for the scheduled work. */ 4226 4225 drm_gem_object_reference(work->old_fb_obj); 4226 + drm_gem_object_reference(obj); 4227 4227 4228 4228 crtc->fb = fb; 4229 4229 i915_gem_object_flush_write_domain(obj);