Module Name:    src
Committed By:   ozaki-r
Date:           Thu Dec 28 07:06:36 UTC 2017

Modified Files:
        src/sys/net: if_bridge.c if_spppsubr.c

Log Message:
Ensure the timer isn't running by using workqueue_wait


To generate a diff of this commit:
cvs rdiff -u -r1.146 -r1.147 src/sys/net/if_bridge.c
cvs rdiff -u -r1.177 -r1.178 src/sys/net/if_spppsubr.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/if_bridge.c
diff -u src/sys/net/if_bridge.c:1.146 src/sys/net/if_bridge.c:1.147
--- src/sys/net/if_bridge.c:1.146	Tue Dec 19 03:32:35 2017
+++ src/sys/net/if_bridge.c	Thu Dec 28 07:06:36 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_bridge.c,v 1.146 2017/12/19 03:32:35 ozaki-r Exp $	*/
+/*	$NetBSD: if_bridge.c,v 1.147 2017/12/28 07:06:36 ozaki-r Exp $	*/
 
 /*
  * Copyright 2001 Wasabi Systems, Inc.
@@ -80,7 +80,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_bridge.c,v 1.146 2017/12/19 03:32:35 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_bridge.c,v 1.147 2017/12/28 07:06:36 ozaki-r Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_bridge_ipf.h"
@@ -1358,7 +1358,8 @@ bridge_stop(struct ifnet *ifp, int disab
 	KASSERT((ifp->if_flags & IFF_RUNNING) != 0);
 	ifp->if_flags &= ~IFF_RUNNING;
 
-	callout_stop(&sc->sc_brcallout);
+	callout_halt(&sc->sc_brcallout, NULL);
+	workqueue_wait(sc->sc_rtage_wq, &sc->sc_rtage_wk);
 	bstp_stop(sc);
 	bridge_rtflush(sc, IFBF_FLUSHDYN);
 }

Index: src/sys/net/if_spppsubr.c
diff -u src/sys/net/if_spppsubr.c:1.177 src/sys/net/if_spppsubr.c:1.178
--- src/sys/net/if_spppsubr.c:1.177	Mon Dec 11 03:29:20 2017
+++ src/sys/net/if_spppsubr.c	Thu Dec 28 07:06:36 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_spppsubr.c,v 1.177 2017/12/11 03:29:20 ozaki-r Exp $	 */
+/*	$NetBSD: if_spppsubr.c,v 1.178 2017/12/28 07:06:36 ozaki-r Exp $	 */
 
 /*
  * Synchronous PPP/Cisco link level subroutines.
@@ -41,7 +41,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_spppsubr.c,v 1.177 2017/12/11 03:29:20 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_spppsubr.c,v 1.178 2017/12/28 07:06:36 ozaki-r Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_inet.h"
@@ -1073,6 +1073,7 @@ sppp_detach(struct ifnet *ifp)
 
 	/* to avoid workqueue enqueued */
 	atomic_swap_uint(&sp->ipcp.update_addrs_enqueued, 1);
+	workqueue_wait(sp->ipcp.update_addrs_wq, &sp->ipcp.update_addrs_wk);
 	workqueue_destroy(sp->ipcp.update_addrs_wq);
 	pcq_destroy(sp->ipcp.update_addrs_q);
 

Reply via email to