diff
+static inline void safe_free_pages(struct page **pp, unsigned int order)
+{
+	if (*pp) {
+		__free_pages(*pp, order);
+		*pp = NULL;
+	}
+}
+
 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));
-	}
+	safe_free_pages(&channel->ringbuffer_page,
+			get_order(channel->ringbuffer_pagecount));
 }
