[azure 4.13][PATCH 07/19] Revert "UBUNTU: SAUCE: vmbus: remove "goto error_clean_msglist" in vmbus_open()"

Marcelo Henrique Cerri marcelo.cerri at canonical.com
Tue Dec 12 15:41:56 UTC 2017


From: Dexuan Cui <decui at microsoft.com>

BugLink: http://bugs.launchpad.net/bugs/1736283

This reverts commit d16b19a0e6687b34c1e1e7dad2fe36250d2b5556.

Signed-off-by: Dexuan Cui <decui at microsoft.com>
Signed-off-by: Marcelo Henrique Cerri <marcelo.cerri at canonical.com>
---
 drivers/hv/channel.c | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/drivers/hv/channel.c b/drivers/hv/channel.c
index a76180bcb9f7..adc6210b8825 100644
--- a/drivers/hv/channel.c
+++ b/drivers/hv/channel.c
@@ -200,18 +200,17 @@ int vmbus_open(struct vmbus_channel *newchannel, u32 send_ringbuffer_size,
 	ret = vmbus_post_msg(open_msg,
 			     sizeof(struct vmbus_channel_open_channel), true);
 
-	if (ret == 0)
-		wait_for_completion(&open_info->waitevent);
+	if (ret != 0) {
+		err = ret;
+		goto error_clean_msglist;
+	}
+
+	wait_for_completion(&open_info->waitevent);
 
 	spin_lock_irqsave(&vmbus_connection.channelmsg_lock, flags);
 	list_del(&open_info->msglistentry);
 	spin_unlock_irqrestore(&vmbus_connection.channelmsg_lock, flags);
 
-	if (ret != 0) {
-		err = ret;
-		goto error_free_gpadl;
-	}
-
 	if (newchannel->rescind) {
 		err = -ENODEV;
 		goto error_free_gpadl;
@@ -226,6 +225,11 @@ int vmbus_open(struct vmbus_channel *newchannel, u32 send_ringbuffer_size,
 	kfree(open_info);
 	return 0;
 
+error_clean_msglist:
+	spin_lock_irqsave(&vmbus_connection.channelmsg_lock, flags);
+	list_del(&open_info->msglistentry);
+	spin_unlock_irqrestore(&vmbus_connection.channelmsg_lock, flags);
+
 error_free_gpadl:
 	vmbus_teardown_gpadl(newchannel, newchannel->ringbuffer_gpadlhandle);
 	kfree(open_info);
-- 
2.7.4





More information about the kernel-team mailing list