From 59339b4fd9b0e5573a68207b9acc2561cb0174ed Mon Sep 17 00:00:00 2001 From: Konsta Holtta Date: Wed, 12 Nov 2014 17:03:32 +0200 Subject: gpu: nvgpu: allocator: release semaphore on error Release rw_sema properly when block allocator runs out of memory and returns error. Change-Id: I6b7cf9564ae25ad1ba30edfcb1ae8a20cf7dc9db Signed-off-by: Konsta Holtta Reviewed-on: http://git-master/r/601792 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom --- drivers/gpu/nvgpu/gk20a/gk20a_allocator.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'drivers/gpu/nvgpu') diff --git a/drivers/gpu/nvgpu/gk20a/gk20a_allocator.c b/drivers/gpu/nvgpu/gk20a/gk20a_allocator.c index b404799f..0b5f9f6f 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a_allocator.c +++ b/drivers/gpu/nvgpu/gk20a/gk20a_allocator.c @@ -89,8 +89,10 @@ int gk20a_allocator_block_alloc(struct gk20a_allocator *allocator, len, allocator->align - 1); if ((_addr > allocator->limit - allocator->base + 1) || - (*addr && *addr != (_addr + allocator->base))) + (*addr && *addr != (_addr + allocator->base))) { + up_write(&allocator->rw_sema); return -ENOMEM; + } bitmap_set(allocator->bitmap, _addr, len); *addr = allocator->base + _addr; -- cgit v1.2.2