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)) {