Author: luigi
Date: Tue Nov  5 00:50:59 2013
New Revision: 257664
URL: http://svnweb.freebsd.org/changeset/base/257664

Log:
  check errors on return from netmap_attach()
  
  Submitted by: Giuseppe Lettieri
  MFC after:    3 days

Modified:
  head/sys/dev/netmap/netmap.c

Modified: head/sys/dev/netmap/netmap.c
==============================================================================
--- head/sys/dev/netmap/netmap.c        Mon Nov  4 23:46:20 2013        
(r257663)
+++ head/sys/dev/netmap/netmap.c        Tue Nov  5 00:50:59 2013        
(r257664)
@@ -535,7 +535,7 @@ BDG_NMB(struct netmap_mem_d *nmd, struct
        return (unlikely(i >= nmd->pools[NETMAP_BUF_POOL].objtotal)) ?  
lut[0].vaddr : lut[i].vaddr;
 }
 
-static void bdg_netmap_attach(struct netmap_adapter *);
+static int bdg_netmap_attach(struct netmap_adapter *);
 static int bdg_netmap_reg(struct ifnet *ifp, int onoff);
 int kern_netmap_regif(struct nmreq *nmr);
 
@@ -1854,6 +1854,7 @@ get_ifp(struct nmreq *nmr, struct ifnet 
                 * and attach it to the ifp
                 */
                struct netmap_adapter tmp_na;
+               int error;
 
                if (nmr->nr_cmd) {
                        /* nr_cmd must be 0 for a virtual port */
@@ -1884,7 +1885,12 @@ get_ifp(struct nmreq *nmr, struct ifnet 
                strcpy(iter->if_xname, name);
                tmp_na.ifp = iter;
                /* bdg_netmap_attach creates a struct netmap_adapter */
-               bdg_netmap_attach(&tmp_na);
+               error = bdg_netmap_attach(&tmp_na);
+               if (error) {
+                       D("error %d", error);
+                       free(iter, M_DEVBUF);
+                       return error;
+               }
                cand2 = -1;     /* only need one port */
        } else if (NETMAP_CAPABLE(iter)) { /* this is a NIC */
                /* make sure the NIC is not already in use */
@@ -4075,7 +4081,7 @@ done:
 }
 
 
-static void
+static int
 bdg_netmap_attach(struct netmap_adapter *arg)
 {
        struct netmap_adapter na;
@@ -4095,7 +4101,7 @@ bdg_netmap_attach(struct netmap_adapter 
        na.nm_mem = netmap_mem_private_new(arg->ifp->if_xname,
                        na.num_tx_rings, na.num_tx_desc,
                        na.num_rx_rings, na.num_rx_desc);
-       netmap_attach(&na, na.num_tx_rings);
+       return netmap_attach(&na, na.num_tx_rings);
 }
 
 
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to