diff options
author | Varun Wadekar <vwadekar@nvidia.com> | 2010-11-23 20:03:02 +0530 |
---|---|---|
committer | Erik Gilling <konkers@android.com> | 2010-12-09 18:56:00 -0800 |
commit | c6b65e02b3026bd77bf3a464d07d19f39f425070 (patch) | |
tree | 8e1a5ec7c609857e4f74ab975c375973c7a38a1a /drivers/video/tegra/host/nvhost_intr.c | |
parent | bad2e94f96154d3a2ac5cc8a5acdc615bc37635a (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/video/tegra/host/nvhost_intr.c')
-rw-r--r-- | drivers/video/tegra/host/nvhost_intr.c | 3 |
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); } } |