DragonFlyBSD Kernel Audit
DF-0371 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/net/lagg/ieee8023ad_lacp.c b/sys/net/lagg/ieee8023ad_lacp.c
--- a/sys/net/lagg/ieee8023ad_lacp.c
+++ b/sys/net/lagg/ieee8023ad_lacp.c
@@ -1930,12 +1930,14 @@
 		    ntohs(mdu->mdu_info.mi_rq_port), *mdu->mdu_info.mi_rq_system,
 		    ntohl(mdu->mdu_info.mi_rq_xid)));
 
+		LACP_LOCK(lsc);
+
 		/* Verify that it is the last marker we sent out */
 		if (memcmp(&mdu->mdu_info, &lp->lp_marker,
-		    sizeof(struct lacp_markerinfo)))
+		    sizeof(struct lacp_markerinfo))) {
+			LACP_UNLOCK(lsc);
 			goto bad;
-
-		LACP_LOCK(lsc);
+		}
 		lp->lp_flags &= ~LACP_PORT_MARK;
 
 		if (lsc->lsc_suppress_distributing) {