+
+failed_secondary:
+ while (!STAILQ_EMPTY(&dev->primary->subchannel_list)) {
+ chan = STAILQ_FIRST(&dev->primary->subchannel_list);
+ vmbus_unmap_resource(chan->txbr.vbr, chan->txbr.dsize * 2);
+ rte_vmbus_chan_close(chan);
+ }
+ rte_vmbus_chan_close(dev->primary);
+
+failed_primary:
+ for (i = 0; i != uio_res->nb_maps; i++) {
+ vmbus_unmap_resource(
+ uio_res->maps[i].addr, uio_res->maps[i].size);
+ }
+
+ return -1;