|
@@ -435,7 +435,7 @@ int vmbus_teardown_gpadl(struct vmbus_channel *channel, u32 gpadl_handle)
|
|
struct vmbus_channel_gpadl_teardown *msg;
|
|
struct vmbus_channel_gpadl_teardown *msg;
|
|
struct vmbus_channel_msginfo *info;
|
|
struct vmbus_channel_msginfo *info;
|
|
unsigned long flags;
|
|
unsigned long flags;
|
|
- int ret, t;
|
|
|
|
|
|
+ int ret;
|
|
|
|
|
|
info = kmalloc(sizeof(*info) +
|
|
info = kmalloc(sizeof(*info) +
|
|
sizeof(struct vmbus_channel_gpadl_teardown), GFP_KERNEL);
|
|
sizeof(struct vmbus_channel_gpadl_teardown), GFP_KERNEL);
|
|
@@ -457,11 +457,12 @@ int vmbus_teardown_gpadl(struct vmbus_channel *channel, u32 gpadl_handle)
|
|
ret = vmbus_post_msg(msg,
|
|
ret = vmbus_post_msg(msg,
|
|
sizeof(struct vmbus_channel_gpadl_teardown));
|
|
sizeof(struct vmbus_channel_gpadl_teardown));
|
|
|
|
|
|
- BUG_ON(ret != 0);
|
|
|
|
- t = wait_for_completion_timeout(&info->waitevent, 5*HZ);
|
|
|
|
- BUG_ON(t == 0);
|
|
|
|
|
|
+ if (ret)
|
|
|
|
+ goto post_msg_err;
|
|
|
|
+
|
|
|
|
+ wait_for_completion(&info->waitevent);
|
|
|
|
|
|
- /* Received a torndown response */
|
|
|
|
|
|
+post_msg_err:
|
|
spin_lock_irqsave(&vmbus_connection.channelmsg_lock, flags);
|
|
spin_lock_irqsave(&vmbus_connection.channelmsg_lock, flags);
|
|
list_del(&info->msglistentry);
|
|
list_del(&info->msglistentry);
|
|
spin_unlock_irqrestore(&vmbus_connection.channelmsg_lock, flags);
|
|
spin_unlock_irqrestore(&vmbus_connection.channelmsg_lock, flags);
|