git: 2d1773f32319 - stable/12 - bridge/stp: Ensure we enter NET_EPOCH whenever we can send traffic

Kristof Provost kp at FreeBSD.org
Tue Mar 2 15:17:56 UTC 2021


The branch stable/12 has been updated by kp:

URL: https://cgit.FreeBSD.org/src/commit/?id=2d1773f323195f2ff4910b1ce0f66207dcae79f3

commit 2d1773f323195f2ff4910b1ce0f66207dcae79f3
Author:     Kristof Provost <kp at FreeBSD.org>
AuthorDate: 2021-02-21 20:18:46 +0000
Commit:     Kristof Provost <kp at FreeBSD.org>
CommitDate: 2021-03-02 13:03:06 +0000

    bridge/stp: Ensure we enter NET_EPOCH whenever we can send traffic
    
    Reviewed by:    donner@
    MFC after:      1 week
    Sponsored by:   Orange Business Services
    Differential Revision:  https://reviews.freebsd.org/D28858
    
    (cherry picked from commit 89fa9c34d76bbf85cd7cda60c1868f5e3dba4ec7)
---
 sys/net/bridgestp.c | 2 ++
 sys/net/if_bridge.c | 8 +++++++-
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/sys/net/bridgestp.c b/sys/net/bridgestp.c
index ed83a2d646f5..d0259c37bf84 100644
--- a/sys/net/bridgestp.c
+++ b/sys/net/bridgestp.c
@@ -1871,6 +1871,7 @@ bstp_tick(void *arg)
 	if (bs->bs_running == 0)
 		return;
 
+	NET_EPOCH_ENTER();
 	CURVNET_SET(bs->bs_vnet);
 
 	/* poll link events on interfaces that do not support linkstate */
@@ -1909,6 +1910,7 @@ bstp_tick(void *arg)
 	}
 
 	CURVNET_RESTORE();
+	NET_EPOCH_EXIT();
 
 	callout_reset(&bs->bs_bstpcallout, hz, bstp_tick, bs);
 }
diff --git a/sys/net/if_bridge.c b/sys/net/if_bridge.c
index 4e5c9ada12d1..8b25c28eb554 100644
--- a/sys/net/if_bridge.c
+++ b/sys/net/if_bridge.c
@@ -1408,11 +1408,15 @@ bridge_ioctl_sifflags(struct bridge_softc *sc, void *arg)
 		/* SPAN is readonly */
 		return (EINVAL);
 
+	NET_EPOCH_ENTER();
+
 	if (req->ifbr_ifsflags & IFBIF_STP) {
 		if ((bif->bif_flags & IFBIF_STP) == 0) {
 			error = bstp_enable(&bif->bif_stp);
-			if (error)
+			if (error) {
+				NET_EPOCH_EXIT();
 				return (error);
+			}
 		}
 	} else {
 		if ((bif->bif_flags & IFBIF_STP) != 0)
@@ -1428,6 +1432,8 @@ bridge_ioctl_sifflags(struct bridge_softc *sc, void *arg)
 	/* Save the bits relating to the bridge */
 	bif->bif_flags = req->ifbr_ifsflags & IFBIFMASK;
 
+	NET_EPOCH_EXIT();
+
 	return (0);
 }
 


More information about the dev-commits-src-all mailing list