diff options
Diffstat (limited to 'drivers/misc/sgi-xp/xpc_channel.c')
-rw-r--r-- | drivers/misc/sgi-xp/xpc_channel.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/misc/sgi-xp/xpc_channel.c b/drivers/misc/sgi-xp/xpc_channel.c index 45fd653dbe3..99a2534c38a 100644 --- a/drivers/misc/sgi-xp/xpc_channel.c +++ b/drivers/misc/sgi-xp/xpc_channel.c | |||
@@ -183,6 +183,7 @@ xpc_process_openclose_chctl_flags(struct xpc_partition *part, int ch_number, | |||
183 | &part->remote_openclose_args[ch_number]; | 183 | &part->remote_openclose_args[ch_number]; |
184 | struct xpc_channel *ch = &part->channels[ch_number]; | 184 | struct xpc_channel *ch = &part->channels[ch_number]; |
185 | enum xp_retval reason; | 185 | enum xp_retval reason; |
186 | enum xp_retval ret; | ||
186 | 187 | ||
187 | spin_lock_irqsave(&ch->lock, irq_flags); | 188 | spin_lock_irqsave(&ch->lock, irq_flags); |
188 | 189 | ||
@@ -399,8 +400,13 @@ again: | |||
399 | DBUG_ON(args->local_nentries == 0); | 400 | DBUG_ON(args->local_nentries == 0); |
400 | DBUG_ON(args->remote_nentries == 0); | 401 | DBUG_ON(args->remote_nentries == 0); |
401 | 402 | ||
403 | ret = xpc_save_remote_msgqueue_pa(ch, args->local_msgqueue_pa); | ||
404 | if (ret != xpSuccess) { | ||
405 | XPC_DISCONNECT_CHANNEL(ch, ret, &irq_flags); | ||
406 | spin_unlock_irqrestore(&ch->lock, irq_flags); | ||
407 | return; | ||
408 | } | ||
402 | ch->flags |= XPC_C_ROPENREPLY; | 409 | ch->flags |= XPC_C_ROPENREPLY; |
403 | xpc_save_remote_msgqueue_pa(ch, args->local_msgqueue_pa); | ||
404 | 410 | ||
405 | if (args->local_nentries < ch->remote_nentries) { | 411 | if (args->local_nentries < ch->remote_nentries) { |
406 | dev_dbg(xpc_chan, "XPC_CHCTL_OPENREPLY: new " | 412 | dev_dbg(xpc_chan, "XPC_CHCTL_OPENREPLY: new " |