diff
+ static void free_monitor_pages(void)
+ {
+     int i;
+     for (i = 0; i < 2; i++) {
+         if (vmbus_connection.monitor_pages[i]) {
+             hv_free_hyperv_page(vmbus_connection.monitor_pages[i]);
+             vmbus_connection.monitor_pages[i] = NULL;
+         }
+     }
+ }

cleanup:
    pr_err("Unable to connect to host\n");
    vmbus_connection.conn_state = DISCONNECTED;
+   free_monitor_pages();
    vmbus_disconnect();
