|
@@ -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) {
|