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