From: Ville Syrjälä Date: Wed, 6 Aug 2014 11:49:52 +0000 (+0300) Subject: drm: Fix race between drm_vblank_off() and drm_queue_vblank_event() X-Git-Tag: fixes-against-v3.18-rc2~73^2~39^2~14 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ffe7c73a8d4f0caeebd5d220ddbf7126a4daca1f;p=pandora-kernel.git drm: Fix race between drm_vblank_off() and drm_queue_vblank_event() Currently it's possible that the following will happen: 1. drm_wait_vblank() calls drm_vblank_get() 2. drm_vblank_off() gets called 3. drm_wait_vblank() calls drm_queue_vblank_event() which adds the event to the queue event though vblank interrupts are currently disabled (and may not be re-enabled ever again). To fix the problem, add another vblank->enabled check into drm_queue_vblank_event(). drm_vblank_off() holds event_lock around the vblank disable, so no further locking needs to be added to drm_queue_vblank_event(). vblank disable from another source is not possible since drm_wait_vblank() already holds a vblank reference. Reviewed-by: Matt Roper Signed-off-by: Ville Syrjälä Signed-off-by: Daniel Vetter --- Reading git-diff-tree failed