aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/misc/gcx/gccore/gcqueue.c7
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);