From 4f0ff678324170cbe431a67862d4099160d4fcbd Mon Sep 17 00:00:00 2001 From: Konsta Holtta Date: Fri, 19 Dec 2014 16:26:50 +0200 Subject: gpu: nvgpu: cde: ignore spurious context releases Gpu channels may get spurious updates from at least nonstalling semaphore wait interrupts. Protect data structure sanity by ignoring releases on already released (= not in use) cde contexts. Bug 200062826 Change-Id: I5940a7557e902bcfcff1a7e8e4593472d9ac306c Signed-off-by: Konsta Holtta Reviewed-on: http://git-master/r/666235 (cherry picked from commit 47dc2f41eb8054b099b6eb9a4a7d82c97295d415) Reviewed-on: http://git-master/r/666657 GVS: Gerrit_Virtual_Submit Reviewed-by: Arto Merilainen --- drivers/gpu/nvgpu/gk20a/cde_gk20a.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'drivers/gpu') diff --git a/drivers/gpu/nvgpu/gk20a/cde_gk20a.c b/drivers/gpu/nvgpu/gk20a/cde_gk20a.c index f3185dd9..6f629e81 100644 --- a/drivers/gpu/nvgpu/gk20a/cde_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/cde_gk20a.c @@ -759,12 +759,13 @@ __releases(&cde_app->mutex) mutex_lock(&cde_app->mutex); - if (!cde_ctx->in_use) + if (cde_ctx->in_use) { + cde_ctx->in_use = false; + list_move(&cde_ctx->list, &cde_app->free_contexts); + cde_app->ctx_usecount--; + } else { gk20a_dbg_info("double release cde context %p", cde_ctx); - - cde_ctx->in_use = false; - list_move(&cde_ctx->list, &cde_app->free_contexts); - cde_app->ctx_usecount--; + } mutex_unlock(&cde_app->mutex); } -- cgit v1.2.2