diff --git a/drivers/gpu/nvgpu/gk20a/gk20a_allocator.c b/drivers/gpu/nvgpu/gk20a/gk20a_allocator.c index b404799f0..0b5f9f6f2 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;