summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBibek Basu <bbasu@nvidia.com>2014-08-01 11:29:19 +0530
committerMatthew Pedro <mapedro@nvidia.com>2014-08-01 08:35:09 -0700
commitbc4bd19dd6e9de8518a784753d7b69224be0b9f6 (patch)
treedf33e2e21aecf2849a24e4094129e08f4d04b9c3
parentec622e35c3d4862f07e3da676401e3feefa98ecf (diff)
nvmap: fix test condition to avoid infinite looptegra-l4t-r16-er-2014-08-01daily-2014.08.04.3_l4t/l4t-r16
Make sure that we dont enter infinite loop due to negative value of pins in some cases. Also remove debugging check for refcount. Bug 1478467 Change-Id: I7df8efa5b3cf8927a0c18363add4f031aca48e48 Signed-off-by: Bibek Basu <bbasu@nvidia.com> Reviewed-on: http://git-master/r/450209 Reviewed-by: Matthew Pedro <mapedro@nvidia.com> Tested-by: Matthew Pedro <mapedro@nvidia.com>
-rw-r--r--drivers/video/tegra/host/nvhost_acm.c4
-rw-r--r--drivers/video/tegra/nvmap/nvmap_handle.c2
2 files changed, 2 insertions, 4 deletions
diff --git a/drivers/video/tegra/host/nvhost_acm.c b/drivers/video/tegra/host/nvhost_acm.c
index fcedb5c1a2c8..edf9286566b4 100644
--- a/drivers/video/tegra/host/nvhost_acm.c
+++ b/drivers/video/tegra/host/nvhost_acm.c
@@ -219,9 +219,7 @@ void nvhost_module_busy(struct nvhost_device *dev)
cancel_delayed_work(&dev->powerstate_down);
dev->refcount++;
- if (unlikely(dev->refcount <= 0))
- pr_err("unbalanced refcount %d\n", dev->refcount);
- if (!nvhost_module_powered(dev))
+ if (dev->refcount > 0 && !nvhost_module_powered(dev))
to_state_running_locked(dev);
mutex_unlock(&dev->lock);
diff --git a/drivers/video/tegra/nvmap/nvmap_handle.c b/drivers/video/tegra/nvmap/nvmap_handle.c
index 1c5e61ccd45d..1a6aec5ae998 100644
--- a/drivers/video/tegra/nvmap/nvmap_handle.c
+++ b/drivers/video/tegra/nvmap/nvmap_handle.c
@@ -904,7 +904,7 @@ void nvmap_free_handle_id(struct nvmap_client *client, unsigned long id)
nvmap_err(client, "%s freeing pinned handle %p\n",
current->group_leader->comm, h);
- while (pins--)
+ while (pins-- > 0)
nvmap_unpin_handles(client, &ref->handle, 1);
if (h->owner == client)