Module Name:    src
Committed By:   christos
Date:           Thu Jan 25 03:54:57 UTC 2018

Modified Files:
        src/sys/net/agr: if_agr.c if_agrsubr.c

Log Message:
Add locking.


To generate a diff of this commit:
cvs rdiff -u -r1.45 -r1.46 src/sys/net/agr/if_agr.c
cvs rdiff -u -r1.11 -r1.12 src/sys/net/agr/if_agrsubr.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/net/agr/if_agr.c
diff -u src/sys/net/agr/if_agr.c:1.45 src/sys/net/agr/if_agr.c:1.46
--- src/sys/net/agr/if_agr.c:1.45	Tue Jan 16 02:34:12 2018
+++ src/sys/net/agr/if_agr.c	Wed Jan 24 22:54:57 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_agr.c,v 1.45 2018/01/16 07:34:12 knakahara Exp $	*/
+/*	$NetBSD: if_agr.c,v 1.46 2018/01/25 03:54:57 christos Exp $	*/
 
 /*-
  * Copyright (c)2005 YAMAMOTO Takashi,
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_agr.c,v 1.45 2018/01/16 07:34:12 knakahara Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_agr.c,v 1.46 2018/01/25 03:54:57 christos Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_inet.h"
@@ -611,7 +611,9 @@ agr_addport(struct ifnet *ifp, struct if
 	 * of each port to that of the first port. No need for arps 
 	 * since there are no inet addresses assigned to the ports.
 	 */
+	IFNET_LOCK(ifp_port);
 	error = if_addr_init(ifp_port, ifp->if_dl, true);
+	IFNET_UNLOCK(ifp_port);
 
 	if (error) {
 		printf("%s: if_addr_init error %d\n", __func__, error);

Index: src/sys/net/agr/if_agrsubr.c
diff -u src/sys/net/agr/if_agrsubr.c:1.11 src/sys/net/agr/if_agrsubr.c:1.12
--- src/sys/net/agr/if_agrsubr.c:1.11	Tue Dec  5 23:37:00 2017
+++ src/sys/net/agr/if_agrsubr.c	Wed Jan 24 22:54:57 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_agrsubr.c,v 1.11 2017/12/06 04:37:00 ozaki-r Exp $	*/
+/*	$NetBSD: if_agrsubr.c,v 1.12 2018/01/25 03:54:57 christos Exp $	*/
 
 /*-
  * Copyright (c)2005 YAMAMOTO Takashi,
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_agrsubr.c,v 1.11 2017/12/06 04:37:00 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_agrsubr.c,v 1.12 2018/01/25 03:54:57 christos Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_inet.h"
@@ -294,7 +294,9 @@ agr_vlan_add(struct agr_port *port, void
 		 */
 		ec_port->ec_capenable |= ETHERCAP_VLAN_MTU;
 		if (p->if_flags & IFF_UP) {
+			IFNET_LOCK(p);
 			error = if_flags_set(p, p->if_flags);
+			IFNET_UNLOCK(p);
 			if (error) {
 				if (ec_port->ec_nvlans-- == 1)
 					ec_port->ec_capenable &=
@@ -321,15 +323,17 @@ agr_vlan_del(struct agr_port *port, void
 	/* Disable vlan support */
 	if ((*force_zero && ec_port->ec_nvlans > 0) ||
 	    ec_port->ec_nvlans-- == 1) {
+		struct ifnet *p = port->port_ifp;
 		if (*force_zero)
 			ec_port->ec_nvlans = 0;
 		/*
 		 * Disable Tx/Rx of VLAN-sized frames.
 		 */
 		ec_port->ec_capenable &= ~ETHERCAP_VLAN_MTU;
-		if (port->port_ifp->if_flags & IFF_UP) {
-			(void)if_flags_set(port->port_ifp,
-			    port->port_ifp->if_flags);
+		if (p->if_flags & IFF_UP) {
+			IFNET_LOCK(p);
+			(void)if_flags_set(p, p->if_flags);
+			IFNET_UNLOCK(p);
 		}
 	}
 

Reply via email to