From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Maathuis Subject: [PATCH 2/2] drm/ttm: don't write to bo->reserved without holding glob->lru_lock Date: Mon, 1 Mar 2010 19:34:40 +0100 Message-ID: <1267468480-3430-2-git-send-email-madman2003@gmail.com> References: <1267468480-3430-1-git-send-email-madman2003@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1267468480-3430-1-git-send-email-madman2003@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.sourceforge.net To: dri-devel@lists.sf.net List-Id: dri-devel@lists.freedesktop.org - The headerfile says you can't write to it without holding the lock. Signed-off-by: Maarten Maathuis --- drivers/gpu/drm/ttm/ttm_bo.c | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-) diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c index f5333d9..2104885 100644 --- a/drivers/gpu/drm/ttm/ttm_bo.c +++ b/drivers/gpu/drm/ttm/ttm_bo.c @@ -476,9 +476,9 @@ static int ttm_bo_cleanup_refs(struct ttm_buffer_object *bo, bool remove_all) drm_mm_put_block(bo->mem.mm_node); bo->mem.mm_node = NULL; } - spin_unlock(&glob->lru_lock); atomic_set(&bo->reserved, 0); + spin_unlock(&glob->lru_lock); while (put_count--) kref_put(&bo->list_kref, ttm_bo_ref_bug); @@ -1707,8 +1707,12 @@ EXPORT_SYMBOL(ttm_bo_wait); void ttm_bo_unblock_reservation(struct ttm_buffer_object *bo) { + struct ttm_bo_global *glob = bo->glob; + + spin_lock(&glob->lru_lock); atomic_set(&bo->reserved, 0); wake_up_all(&bo->event_queue); + spin_unlock(&glob->lru_lock); } int ttm_bo_block_reservation(struct ttm_buffer_object *bo, bool interruptible, @@ -1849,8 +1853,10 @@ out: * already swapped buffer. */ + spin_lock(&glob->lru_lock); atomic_set(&bo->reserved, 0); wake_up_all(&bo->event_queue); + spin_unlock(&glob->lru_lock); kref_put(&bo->list_kref, ttm_bo_release_list); return ret; } -- 1.7.0 ------------------------------------------------------------------------------ Download Intel® Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev --