From: SeokYeon Hwang Date: Wed, 13 Nov 2013 06:01:51 +0000 (+0900) Subject: brillcodec: Avoid some multi-threading unsafe issue. X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c8b4f457a76dc44a5f1f091cea0541076fdc1927;p=sdk%2Femulator%2Femulator-kernel.git brillcodec: Avoid some multi-threading unsafe issue. Change-Id: Idc46d39b0c5044b54ef3a2d5778d2bdb19c98a1e Signed-off-by: SeokYeon Hwang --- diff --git a/drivers/maru/maru_brillcodec.c b/drivers/maru/maru_brillcodec.c index d01806a32cc9..1b4bebe79d3a 100644 --- a/drivers/maru/maru_brillcodec.c +++ b/drivers/maru/maru_brillcodec.c @@ -350,13 +350,6 @@ static void release_device_memory(uint32_t mem_offset) if (unit->mem_offset == (uint32_t)mem_offset) { unit->blk_id = 0; list_move_tail(&unit->entry, &block->available); - if(block->last_buf_secured) { - up(&block->last_buf_semaphore); - block->last_buf_secured = 0; - } else { - up(&block->semaphore); - } - DEBUG("unlock s_buffer_sema: %d\n", block->semaphore.count); break; } @@ -366,6 +359,14 @@ static void release_device_memory(uint32_t mem_offset) ERROR("there is no used memory block.\n"); } mutex_unlock(&block->access_mutex); + + if(block->last_buf_secured) { + block->last_buf_secured = 0; + up(&block->last_buf_semaphore); + } else { + up(&block->semaphore); + } + DEBUG("unlock s_buffer_sema: %d\n", block->semaphore.count); } static void maru_brill_codec_info_cache(void)