diff options
-rw-r--r-- | drivers/misc/gcx/gccore/gcqueue.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/misc/gcx/gccore/gcqueue.c b/drivers/misc/gcx/gccore/gcqueue.c index 7e14fa1..472f33d 100644 --- a/drivers/misc/gcx/gccore/gcqueue.c +++ b/drivers/misc/gcx/gccore/gcqueue.c @@ -567,10 +567,13 @@ static int gccmdthread(void *_gccorecontext) /* Wait for ready signal. If 'ready' is signaled before the * call times out, signaled is set to a value greater then * zero. If the call times out, signaled is set to zero. */ - signaled = wait_for_completion_timeout(&gcqueue->ready, - timeout); + signaled = wait_for_completion_interruptible_timeout( + &gcqueue->ready, timeout); GCDBG(GCZONE_THREAD, "wait(ready) = %d.\n", signaled); + if (signaled < 0) + continue; + /* Get triggered interrupts. */ ints2process = triggered = atomic_read(&gcqueue->triggered); GCDBG(GCZONE_THREAD, "int = 0x%08X.\n", triggered); |