浏览代码

[POWERPC] spufs: update master runcntl with context lock held

Currently, we update the SPU master run control bit (ie,
spu_enable_spu) in spufs_run_spu before we grab the context mutex. This
can result in races with other processes accessing this context's
resources.

This change moves the spu_enable_spu to after we have acquired the
context lock.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Jeremy Kerr 17 年之前
父节点
当前提交
c0bace5c70
共有 1 个文件被更改,包括 2 次插入1 次删除
  1. 2 1
      arch/powerpc/platforms/cell/spufs/run.c

+ 2 - 1
arch/powerpc/platforms/cell/spufs/run.c

@@ -343,13 +343,14 @@ long spufs_run_spu(struct spu_context *ctx, u32 *npc, u32 *event)
 	if (mutex_lock_interruptible(&ctx->run_mutex))
 		return -ERESTARTSYS;
 
-	spu_enable_spu(ctx);
 	ctx->event_return = 0;
 
 	ret = spu_acquire(ctx);
 	if (ret)
 		goto out_unlock;
 
+	spu_enable_spu(ctx);
+
 	spu_update_sched_info(ctx);
 
 	ret = spu_run_init(ctx, npc);