From bc4bd19dd6e9de8518a784753d7b69224be0b9f6 Mon Sep 17 00:00:00 2001 From: Bibek Basu Date: Fri, 1 Aug 2014 11:29:19 +0530 Subject: nvmap: fix test condition to avoid infinite loop 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 Reviewed-on: http://git-master/r/450209 Reviewed-by: Matthew Pedro Tested-by: Matthew Pedro --- drivers/video/tegra/host/nvhost_acm.c | 4 +--- drivers/video/tegra/nvmap/nvmap_handle.c | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) (limited to 'drivers/video/tegra') 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) -- cgit v1.2.3