Commit c0bace5c authored by Jeremy Kerr's avatar Jeremy Kerr

[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: default avatarJeremy Kerr <jk@ozlabs.org>
parent 55d7cd74
...@@ -343,13 +343,14 @@ long spufs_run_spu(struct spu_context *ctx, u32 *npc, u32 *event) ...@@ -343,13 +343,14 @@ long spufs_run_spu(struct spu_context *ctx, u32 *npc, u32 *event)
if (mutex_lock_interruptible(&ctx->run_mutex)) if (mutex_lock_interruptible(&ctx->run_mutex))
return -ERESTARTSYS; return -ERESTARTSYS;
spu_enable_spu(ctx);
ctx->event_return = 0; ctx->event_return = 0;
ret = spu_acquire(ctx); ret = spu_acquire(ctx);
if (ret) if (ret)
goto out_unlock; goto out_unlock;
spu_enable_spu(ctx);
spu_update_sched_info(ctx); spu_update_sched_info(ctx);
ret = spu_run_init(ctx, npc); ret = spu_run_init(ctx, npc);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment