From f807ad932c0b042968c1a1341febca946b458541 Mon Sep 17 00:00:00 2001 From: Deepak Nibade Date: Thu, 11 Jun 2020 15:59:26 +0530 Subject: [PATCH] gpu: nvgpu: fix uninitialized variable error MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Enabling Kcov and KASAN causes below compilation failure : common/mm/vm_area.c:255:3: error: ‘vma’ may be used uninitialized in this function [-Werror=maybe-uninitialized] Fix this by correcting failure cases in function nvgpu_vm_area_alloc() Bug 2155608 Change-Id: Id4070157f2a8bd7043b0c49effb6f61cce5eecc2 Signed-off-by: Deepak Nibade Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2359496 Reviewed-by: automaticguardword Reviewed-by: svc-mobile-coverity Reviewed-by: svc-mobile-misra Reviewed-by: svc-mobile-cert Reviewed-by: Alex Waterman Reviewed-by: Debarshi Dutta Reviewed-by: Konsta Holtta Reviewed-by: mobile promotions GVS: Gerrit_Virtual_Submit Tested-by: mobile promotions --- drivers/gpu/nvgpu/common/mm/vm_area.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/nvgpu/common/mm/vm_area.c b/drivers/gpu/nvgpu/common/mm/vm_area.c index 6c213bbdf..35a1b4ec0 100644 --- a/drivers/gpu/nvgpu/common/mm/vm_area.c +++ b/drivers/gpu/nvgpu/common/mm/vm_area.c @@ -221,13 +221,13 @@ int nvgpu_vm_area_alloc(struct vm_gk20a *vm, u32 pages, u32 page_size, vm_area = nvgpu_kzalloc(g, sizeof(*vm_area)); if (vm_area == NULL) { - goto clean_up_err; + return -ENOMEM; } vma = vm->vma[pgsz_idx]; if (nvgpu_vm_area_alloc_memory(vma, our_addr, pages, page_size, flags, &vaddr_start) != 0) { - goto clean_up_err; + goto free_vm_area; } vm_area->flags = flags; @@ -242,7 +242,7 @@ int nvgpu_vm_area_alloc(struct vm_gk20a *vm, u32 pages, u32 page_size, if (nvgpu_vm_area_alloc_gmmu_map(vm, vm_area, vaddr_start, pgsz_idx, flags) != 0) { nvgpu_mutex_release(&vm->update_gmmu_lock); - goto clean_up_err; + goto free_vaddr; } nvgpu_mutex_release(&vm->update_gmmu_lock); @@ -250,13 +250,10 @@ int nvgpu_vm_area_alloc(struct vm_gk20a *vm, u32 pages, u32 page_size, *addr = vaddr_start; return 0; -clean_up_err: - if (vaddr_start != 0ULL) { - nvgpu_free(vma, vaddr_start); - } - if (vm_area != NULL) { - nvgpu_kfree(g, vm_area); - } +free_vaddr: + nvgpu_free(vma, vaddr_start); +free_vm_area: + nvgpu_kfree(g, vm_area); return -ENOMEM; }