提交 e7e24df4 编写于 作者: T Tomi Valkeinen

drm/omap: tiler: fix race condition with engine->async

The tiler irq handler uses engine->async value, but the code that sets
engine->async and enables the interrupt does not have a barrier. This
may cause the irq handler to see the old value of engine->async, causing
memory corruption.
Reported-by: NHarinarayan Bhatta <harinarayan@ti.com>
Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
上级 2dd3887b
......@@ -273,6 +273,8 @@ static int dmm_txn_commit(struct dmm_txn *txn, bool wait)
/* mark whether it is async to denote list management in IRQ handler */
engine->async = wait ? false : true;
/* verify that the irq handler sees the 'async' value */
smp_mb();
/* kick reload */
writel(engine->refill_pa,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册