diff options
Diffstat (limited to 'drivers/misc/sgi-xp/xpc_channel.c')
| -rw-r--r-- | drivers/misc/sgi-xp/xpc_channel.c | 5 | 
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/misc/sgi-xp/xpc_channel.c b/drivers/misc/sgi-xp/xpc_channel.c index 652593fc486d..128d5615c804 100644 --- a/drivers/misc/sgi-xp/xpc_channel.c +++ b/drivers/misc/sgi-xp/xpc_channel.c @@ -828,6 +828,7 @@ enum xp_retval  xpc_allocate_msg_wait(struct xpc_channel *ch)  {  	enum xp_retval ret; +	DEFINE_WAIT(wait);  	if (ch->flags & XPC_C_DISCONNECTING) {  		DBUG_ON(ch->reason == xpInterrupted); @@ -835,7 +836,9 @@ xpc_allocate_msg_wait(struct xpc_channel *ch)  	}  	atomic_inc(&ch->n_on_msg_allocate_wq); -	ret = interruptible_sleep_on_timeout(&ch->msg_allocate_wq, 1); +	prepare_to_wait(&ch->msg_allocate_wq, &wait, TASK_INTERRUPTIBLE); +	ret = schedule_timeout(1); +	finish_wait(&ch->msg_allocate_wq, &wait);  	atomic_dec(&ch->n_on_msg_allocate_wq);  	if (ch->flags & XPC_C_DISCONNECTING) {  |