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);