From: Varun Wadekar Date: Tue, 23 Nov 2010 14:33:02 +0000 (+0530) Subject: tegra: video: host: fix race condition in hostintr wait list X-Git-Tag: firefly_0821_release~9833^2~88^2~2 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=c6b65e02b3026bd77bf3a464d07d19f39f425070;p=firefly-linux-kernel-4.4.55.git tegra: video: host: fix race condition in hostintr wait list Change-Id: I5e58f5fe8935741441e2b30f585bb997b6317d3d Author: Alex Frid Signed-off-by: Varun Wadekar --- 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); } }