From cb2e183b22d51fffb2d582a5020225750d609c3a Mon Sep 17 00:00:00 2001 From: N V S Abhishek Date: Thu, 18 Apr 2024 10:19:04 +0000 Subject: [PATCH] nvmap: Fix incorrect deallocator SAST defect Deallocator vfree is used when kfree should be used. Use nvmap_altfree earlier and set pages to NULL, to use appropriate deallocator function and fix 1 ALLOC_FREE_MISMATCH SAST defect. Bug 4479044 Change-Id: I0257107fcef31271f14775bc3f6354390caf08f0 Signed-off-by: N V S Abhishek Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3118540 Reviewed-by: svcacv Reviewed-by: Sachin Nikam GVS: buildbot_gerritrpt --- drivers/video/tegra/nvmap/nvmap_core.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/video/tegra/nvmap/nvmap_core.c b/drivers/video/tegra/nvmap/nvmap_core.c index 5b30f452..4d555f04 100644 --- a/drivers/video/tegra/nvmap/nvmap_core.c +++ b/drivers/video/tegra/nvmap/nvmap_core.c @@ -79,9 +79,11 @@ void *__nvmap_mmap(struct nvmap_handle *h) goto out; vaddr = vmap(pages, h->size >> PAGE_SHIFT, VM_MAP, prot); + nvmap_altfree(pages, (h->size >> PAGE_SHIFT) * sizeof(*pages)); + pages = NULL; + if (!vaddr && !h->vaddr) goto out; - nvmap_altfree(pages, (h->size >> PAGE_SHIFT) * sizeof(*pages)); if (vaddr && atomic_long_cmpxchg((atomic_long_t *)(void *)&h->vaddr, 0, (long)vaddr)) {