Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d29694f0 authored by Jeremy Kerr's avatar Jeremy Kerr
Browse files

[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: default avatarJeremy Kerr <jk@ozlabs.org>
parent c0bace5c
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -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