tegra: video: host: fix race condition in hostintr wait list
authorVarun Wadekar <vwadekar@nvidia.com>
Tue, 23 Nov 2010 14:33:02 +0000 (20:03 +0530)
committerErik Gilling <konkers@android.com>
Fri, 10 Dec 2010 02:56:00 +0000 (18:56 -0800)
Change-Id: I5e58f5fe8935741441e2b30f585bb997b6317d3d
Author: Alex Frid <afrid@nvidia.com>
Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
drivers/video/tegra/host/nvhost_intr.c

index 848d8b1e84e0ad1452bcb3f075a7cd9f481fbab5..007aaed9909fd5e93aae119478802be83cd5af0f 100644 (file)
@@ -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);
                }
        }