svn commit: r362555 - stable/12/sys/net
Vincenzo Maffione
vmaffione at FreeBSD.org
Tue Jun 23 20:44:06 UTC 2020
Author: vmaffione
Date: Tue Jun 23 20:44:05 2020
New Revision: 362555
URL: https://svnweb.freebsd.org/changeset/base/362555
Log:
MFC r362185
iflib: netmap: enter/exit netmap mode after device stops
Avoid possible race conditions by calling nm_set_native_flags()
and nm_clear_native_flags() only after the device has been
stopped.
Modified:
stable/12/sys/net/iflib.c
Directory Properties:
stable/12/ (props changed)
Modified: stable/12/sys/net/iflib.c
==============================================================================
--- stable/12/sys/net/iflib.c Tue Jun 23 20:41:10 2020 (r362554)
+++ stable/12/sys/net/iflib.c Tue Jun 23 20:44:05 2020 (r362555)
@@ -793,13 +793,19 @@ iflib_netmap_register(struct netmap_adapter *na, int o
if (!CTX_IS_VF(ctx))
IFDI_CRCSTRIP_SET(ctx, onoff, iflib_crcstrip);
- /* enable or disable flags and callbacks in na and ifp */
+ iflib_stop(ctx);
+
+ /*
+ * Enable (or disable) netmap flags, and intercept (or restore)
+ * ifp->if_transmit. This is done once the device has been stopped
+ * to prevent race conditions.
+ */
if (onoff) {
nm_set_native_flags(na);
} else {
nm_clear_native_flags(na);
}
- iflib_stop(ctx);
+
iflib_init_locked(ctx);
IFDI_CRCSTRIP_SET(ctx, onoff, iflib_crcstrip); // XXX why twice ?
status = ifp->if_drv_flags & IFF_DRV_RUNNING ? 0 : 1;
More information about the svn-src-stable-12
mailing list