Author: vmaffione
Date: Mon Jul  1 20:37:35 2019
New Revision: 349581
URL: https://svnweb.freebsd.org/changeset/base/349581

Log:
  netmap: fix two panics with emulated adapter
  
  This patch fixes 2 panics. The first one is due to the current VNET not
  being set in the emulated adapter transmission path. The second one
  is caused by the M_PKTHDR flag not being set when preallocated mbufs
  are recycled in the transmit path.
  
  Submitted by: aleksandr.fedo...@itglobal.com
  Reviewed by:  vmaffione
  MFC after:    2 weeks
  Differential Revision:        https://reviews.freebsd.org/D20824

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

Modified: head/sys/dev/netmap/netmap_freebsd.c
==============================================================================
--- head/sys/dev/netmap/netmap_freebsd.c        Mon Jul  1 17:05:41 2019        
(r349580)
+++ head/sys/dev/netmap/netmap_freebsd.c        Mon Jul  1 20:37:35 2019        
(r349581)
@@ -444,6 +444,7 @@ nm_os_generic_xmit_frame(struct nm_os_gen_arg *a)
        m->m_ext.ext_size = len;
 #endif /* __FreeBSD_version >= 1100000 */
 
+       m->m_flags |= M_PKTHDR;
        m->m_len = m->m_pkthdr.len = len;
 
        /* mbuf refcnt is not contended, no need to use atomic
@@ -452,7 +453,9 @@ nm_os_generic_xmit_frame(struct nm_os_gen_arg *a)
        M_HASHTYPE_SET(m, M_HASHTYPE_OPAQUE);
        m->m_pkthdr.flowid = a->ring_nr;
        m->m_pkthdr.rcvif = ifp; /* used for tx notification */
+       CURVNET_SET(ifp->if_vnet);
        ret = NA(ifp)->if_transmit(ifp, m);
+       CURVNET_RESTORE();
        return ret ? -1 : 0;
 }
 
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to