diff options
-rw-r--r-- | drivers/hv/channel.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/drivers/hv/channel.c b/drivers/hv/channel.c index 54da66dc7d16..7a1c2db1826b 100644 --- a/drivers/hv/channel.c +++ b/drivers/hv/channel.c @@ -178,19 +178,18 @@ int vmbus_open(struct vmbus_channel *newchannel, u32 send_ringbuffer_size, goto error1; } - - if (open_info->response.open_result.status) - err = open_info->response.open_result.status; - spin_lock_irqsave(&vmbus_connection.channelmsg_lock, flags); list_del(&open_info->msglistentry); spin_unlock_irqrestore(&vmbus_connection.channelmsg_lock, flags); - if (err == 0) - newchannel->state = CHANNEL_OPENED_STATE; + if (open_info->response.open_result.status) { + err = -EAGAIN; + goto error_gpadl; + } + newchannel->state = CHANNEL_OPENED_STATE; kfree(open_info); - return err; + return 0; error1: spin_lock_irqsave(&vmbus_connection.channelmsg_lock, flags); |