mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-17 01:04:19 +08:00
[POWERPC] spufs: don't acquire state_mutex interruptible while performing callback
There's currently no way to tell if spu_process_callback has returned with the state mutex held, as -EINTR may be returned by either the syscall or the spu_acquire fail case. Instead, just do a non-interruptible mutex_lock here. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
This commit is contained in:
parent
c0bace5c70
commit
d29694f068
@ -294,7 +294,7 @@ static int spu_process_callback(struct spu_context *ctx)
|
||||
u32 ls_pointer, npc;
|
||||
void __iomem *ls;
|
||||
long spu_ret;
|
||||
int ret, ret2;
|
||||
int ret;
|
||||
|
||||
/* get syscall block from local store */
|
||||
npc = ctx->ops->npc_read(ctx) & ~3;
|
||||
@ -316,11 +316,9 @@ static int spu_process_callback(struct spu_context *ctx)
|
||||
if (spu_ret <= -ERESTARTSYS) {
|
||||
ret = spu_handle_restartsys(ctx, &spu_ret, &npc);
|
||||
}
|
||||
ret2 = spu_acquire(ctx);
|
||||
mutex_lock(&ctx->state_mutex);
|
||||
if (ret == -ERESTARTSYS)
|
||||
return ret;
|
||||
if (ret2)
|
||||
return -EINTR;
|
||||
}
|
||||
|
||||
/* need to re-get the ls, as it may have changed when we released the
|
||||
|
Loading…
Reference in New Issue
Block a user