diff
+static void cleanup_ringbuffer(struct vmbus_channel *channel)
+{
+	if (channel->ringbuffer_page) {
+		__free_pages(channel->ringbuffer_page,
+			     get_order(channel->ringbuffer_pagecount));
+		channel->ringbuffer_page = NULL;
+		channel->ringbuffer_pagecount = 0;
+	}
+}
+
 void vmbus_free_ring(struct vmbus_channel *channel)
 {
 	hv_ringbuffer_cleanup(&channel->outbound);
 	hv_ringbuffer_cleanup(&channel->inbound);
 
-	if (channel->ringbuffer_page) {
-		__free_pages(channel->ringbuffer_page,
-			     get_order(channel->ringbuffer_pagecount));
-	}
+	cleanup_ringbuffer(channel);
 }
