[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>
This commit is contained in:
parent
55d7cd74d4
commit
c0bace5c70
1 changed files with 2 additions and 1 deletions
|
@ -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);
|
||||||
|
|
Loading…
Add table
Reference in a new issue