From bcdfae6c15ef90730ef377ae7aac2a3f369436f4 Mon Sep 17 00:00:00 2001 From: Hiroshi Doyu Date: Fri, 15 Mar 2013 14:50:50 +0200 Subject: video: tegra: nvmap: Unpin memory on errors This patch adds a missing handle_unpin() calls to nvmap_pin_ids() and _nvmap_pin() error paths. Bug 1246095 Bug 1263718 Change-Id: I6b8e632aa8d90f2436cfbaad8015e11527c6da83 Signed-off-by: Hiroshi Doyu Reviewed-on: http://git-master/r/210009 (cherry picked from commit 68e43a5aa350eff1c66f0020fbdd189f085cce58) Reviewed-on: http://git-master/r/215467 Reviewed-by: Bharat Nihalani Tested-by: Sandeep Shinde --- drivers/video/tegra/nvmap/nvmap.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'drivers/video/tegra/nvmap/nvmap.c') diff --git a/drivers/video/tegra/nvmap/nvmap.c b/drivers/video/tegra/nvmap/nvmap.c index e5d829b3d05d..4e84c05dab48 100644 --- a/drivers/video/tegra/nvmap/nvmap.c +++ b/drivers/video/tegra/nvmap/nvmap.c @@ -594,12 +594,15 @@ phys_addr_t _nvmap_pin(struct nvmap_client *client, if (h->heap_pgalloc && h->pgalloc.dirty) ret = map_iovmm_area(h); if (ret) - goto err_out; + goto err_out_unpin; phys = handle_phys(h); } return phys; +err_out_unpin: + nvmap_handle_get(h); + handle_unpin(client, h, true); err_out: atomic_dec(&ref->pin); nvmap_handle_put(h); -- cgit v1.2.3