Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e9a27a9f authored by K. Y. Srinivasan's avatar K. Y. Srinivasan Committed by Greg Kroah-Hartman
Browse files

Staging: hv: vmbus: Use the newly introduced state in closing the channel



Now, use the newly introduced state in closing the channel and eliminate a
potential failure condition (that currently was not being handled correctly).

Signed-off-by: default avatarK. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: default avatarHaiyang Zhang <haiyangz@microsoft.com>
Signed-off-by: default avatarAbhishek Kane <v-abkane@microsoft.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent f9f1db83
Loading
Loading
Loading
Loading
+1 −9
Original line number Diff line number Diff line
@@ -549,22 +549,15 @@ EXPORT_SYMBOL_GPL(vmbus_teardown_gpadl);
void vmbus_close(struct vmbus_channel *channel)
{
	struct vmbus_channel_close_channel *msg;
	struct vmbus_channel_msginfo *info;
	int ret;

	/* Stop callback and cancel the timer asap */
	channel->onchannel_callback = NULL;

	/* Send a closing message */
	info = kmalloc(sizeof(*info) +
		       sizeof(struct vmbus_channel_close_channel), GFP_KERNEL);
        /* FIXME: can't do anything other than return here because the
	 *        function is void */
	if (!info)
		return;

	msg = &channel->close_msg.msg;

	msg = (struct vmbus_channel_close_channel *)info->msg;
	msg->header.msgtype = CHANNELMSG_CLOSECHANNEL;
	msg->child_relid = channel->offermsg.child_relid;

@@ -583,7 +576,6 @@ void vmbus_close(struct vmbus_channel *channel)
	free_pages((unsigned long)channel->ringbuffer_pages,
		get_order(channel->ringbuffer_pagecount * PAGE_SIZE));

	kfree(info);

}
EXPORT_SYMBOL_GPL(vmbus_close);