diff
void vmbus_disconnect(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;
+       }
+   }
    // ... (rest of vmbus_disconnect function)
}

// In vmbus_connect():
cleanup:
    pr_err("Unable to connect to host\n");
    vmbus_connection.conn_state = DISCONNECTED;
    vmbus_disconnect();
