Index: sys/dev/xen/netfront/netfront.c =================================================================== --- sys/dev/xen/netfront/netfront.c +++ sys/dev/xen/netfront/netfront.c @@ -1907,7 +1907,7 @@ &np->gref_tx_head) != 0) { IPRINTK("#### netfront can't alloc tx grant refs\n"); err = ENOMEM; - goto exit; + goto out; } /* A grant for every rx ring slot */ if (gnttab_alloc_grant_references(RX_MAX_TARGET, @@ -1915,12 +1915,15 @@ WPRINTK("#### netfront can't alloc rx grant refs\n"); gnttab_free_grant_references(np->gref_tx_head); err = ENOMEM; - goto exit; + goto out; } err = xen_net_read_mac(dev, np->mac); - if (err) + if (err) { + gnttab_free_grant_references(np->gref_rx_head); + gnttab_free_grant_references(np->gref_tx_head); goto out; + } /* Set up ifnet structure */ ifp = np->xn_ifp = if_alloc(IFT_ETHER); @@ -1948,8 +1951,6 @@ return (0); -exit: - gnttab_free_grant_references(np->gref_tx_head); out: return (err); }