summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorVarun Wadekar <vwadekar@nvidia.com>2010-11-23 20:03:02 +0530
committerDan Willemsen <dwillemsen@nvidia.com>2011-11-30 21:36:48 -0800
commit4952f856bbbaf0c9d28a4074e5f23a2757fec36a (patch)
tree519eeeb7057b00c9cae7219d5b9018b7e2952275 /drivers
parent825a9e1c79a36d708ef6a0dd70c0fa8855218d0b (diff)
tegra: video: host: fix race condition in hostintr wait list
Change-Id: I5e58f5fe8935741441e2b30f585bb997b6317d3d Author: Alex Frid <afrid@nvidia.com> Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/video/tegra/host/nvhost_intr.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/video/tegra/host/nvhost_intr.c b/drivers/video/tegra/host/nvhost_intr.c
index 848d8b1e84e0..007aaed9909f 100644
--- a/drivers/video/tegra/host/nvhost_intr.c
+++ b/drivers/video/tegra/host/nvhost_intr.c
@@ -178,8 +178,7 @@ static void run_handlers(struct list_head completed[NVHOST_INTR_ACTION_COUNT])
list_for_each_entry_safe(waiter, next, head, list) {
list_del(&waiter->list);
handler(waiter);
- atomic_set(&waiter->state, WLS_HANDLED);
- smp_wmb();
+ WARN_ON(atomic_xchg(&waiter->state, WLS_HANDLED) != WLS_REMOVED);
kref_put(&waiter->refcount, waiter_release);
}
}