Module Name: src Committed By: ozaki-r Date: Fri Nov 17 07:37:12 UTC 2017
Modified Files: src/sys/net: bpf.c if.c if.h if_loop.c if_pppoe.c rtsock.c src/sys/net/npf: npf_os.c src/sys/netinet: if_arp.c igmp.c in.c ip_flow.c ip_input.c ip_output.c src/sys/netinet6: frag6.c in6.c ip6_flow.c ip6_input.c mld6.c nd6.c nd6_nbr.c src/sys/netipsec: ipsec_output.c Log Message: Provide macros for softnet_lock and KERNEL_LOCK hiding NET_MPSAFE switch It reduces C&P codes such as "#ifndef NET_MPSAFE KERNEL_LOCK(1, NULL); ..." scattered all over the source code and makes it easy to identify remaining KERNEL_LOCK and/or softnet_lock that are held even if NET_MPSAFE. No functional change To generate a diff of this commit: cvs rdiff -u -r1.218 -r1.219 src/sys/net/bpf.c cvs rdiff -u -r1.396 -r1.397 src/sys/net/if.c cvs rdiff -u -r1.242 -r1.243 src/sys/net/if.h cvs rdiff -u -r1.98 -r1.99 src/sys/net/if_loop.c cvs rdiff -u -r1.131 -r1.132 src/sys/net/if_pppoe.c cvs rdiff -u -r1.229 -r1.230 src/sys/net/rtsock.c cvs rdiff -u -r1.7 -r1.8 src/sys/net/npf/npf_os.c cvs rdiff -u -r1.254 -r1.255 src/sys/netinet/if_arp.c cvs rdiff -u -r1.64 -r1.65 src/sys/netinet/igmp.c cvs rdiff -u -r1.209 -r1.210 src/sys/netinet/in.c cvs rdiff -u -r1.80 -r1.81 src/sys/netinet/ip_flow.c cvs rdiff -u -r1.361 -r1.362 src/sys/netinet/ip_input.c cvs rdiff -u -r1.284 -r1.285 src/sys/netinet/ip_output.c cvs rdiff -u -r1.60 -r1.61 src/sys/netinet6/frag6.c cvs rdiff -u -r1.250 -r1.251 src/sys/netinet6/in6.c cvs rdiff -u -r1.34 -r1.35 src/sys/netinet6/ip6_flow.c cvs rdiff -u -r1.182 -r1.183 src/sys/netinet6/ip6_input.c cvs rdiff -u -r1.89 -r1.90 src/sys/netinet6/mld6.c cvs rdiff -u -r1.238 -r1.239 src/sys/netinet6/nd6.c cvs rdiff -u -r1.138 -r1.139 src/sys/netinet6/nd6_nbr.c cvs rdiff -u -r1.64 -r1.65 src/sys/netipsec/ipsec_output.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/bpf.c diff -u src/sys/net/bpf.c:1.218 src/sys/net/bpf.c:1.219 --- src/sys/net/bpf.c:1.218 Wed Oct 25 08:12:40 2017 +++ src/sys/net/bpf.c Fri Nov 17 07:37:12 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: bpf.c,v 1.218 2017/10/25 08:12:40 maya Exp $ */ +/* $NetBSD: bpf.c,v 1.219 2017/11/17 07:37:12 ozaki-r Exp $ */ /* * Copyright (c) 1990, 1991, 1993 @@ -39,7 +39,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: bpf.c,v 1.218 2017/10/25 08:12:40 maya Exp $"); +__KERNEL_RCSID(0, "$NetBSD: bpf.c,v 1.219 2017/11/17 07:37:12 ozaki-r Exp $"); #if defined(_KERNEL_OPT) #include "opt_bpf.h" @@ -484,13 +484,9 @@ bpf_detachd(struct bpf_d *d) * the interface was configured down, so only panic * if we don't get an unexpected error. */ -#ifndef NET_MPSAFE - KERNEL_LOCK(1, NULL); -#endif + KERNEL_LOCK_UNLESS_NET_MPSAFE(); error = ifpromisc(bp->bif_ifp, 0); -#ifndef NET_MPSAFE - KERNEL_UNLOCK_ONE(NULL); -#endif + KERNEL_UNLOCK_UNLESS_NET_MPSAFE(); #ifdef DIAGNOSTIC if (error) printf("%s: ifpromisc failed: %d", __func__, error); @@ -1022,13 +1018,9 @@ bpf_ioctl(struct file *fp, u_long cmd, v break; } if (d->bd_promisc == 0) { -#ifndef NET_MPSAFE - KERNEL_LOCK(1, NULL); -#endif + KERNEL_LOCK_UNLESS_NET_MPSAFE(); error = ifpromisc(d->bd_bif->bif_ifp, 1); -#ifndef NET_MPSAFE - KERNEL_UNLOCK_ONE(NULL); -#endif + KERNEL_UNLOCK_UNLESS_NET_MPSAFE(); if (error == 0) d->bd_promisc = 1; } @@ -2249,13 +2241,9 @@ bpf_setdlt(struct bpf_d *d, u_int dlt) bpf_attachd(d, bp); reset_d(d); if (opromisc) { -#ifndef NET_MPSAFE - KERNEL_LOCK(1, NULL); -#endif + KERNEL_LOCK_UNLESS_NET_MPSAFE(); error = ifpromisc(bp->bif_ifp, 1); -#ifndef NET_MPSAFE - KERNEL_UNLOCK_ONE(NULL); -#endif + KERNEL_UNLOCK_UNLESS_NET_MPSAFE(); if (error) printf("%s: bpf_setdlt: ifpromisc failed (%d)\n", bp->bif_ifp->if_xname, error); Index: src/sys/net/if.c diff -u src/sys/net/if.c:1.396 src/sys/net/if.c:1.397 --- src/sys/net/if.c:1.396 Mon Oct 23 09:21:20 2017 +++ src/sys/net/if.c Fri Nov 17 07:37:12 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: if.c,v 1.396 2017/10/23 09:21:20 msaitoh Exp $ */ +/* $NetBSD: if.c,v 1.397 2017/11/17 07:37:12 ozaki-r Exp $ */ /*- * Copyright (c) 1999, 2000, 2001, 2008 The NetBSD Foundation, Inc. @@ -90,7 +90,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if.c,v 1.396 2017/10/23 09:21:20 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if.c,v 1.397 2017/11/17 07:37:12 ozaki-r Exp $"); #if defined(_KERNEL_OPT) #include "opt_inet.h" @@ -2331,10 +2331,7 @@ if_link_state_change_si(void *arg) int s; uint8_t state; -#ifndef NET_MPSAFE - mutex_enter(softnet_lock); - KERNEL_LOCK(1, NULL); -#endif + SOFTNET_KERNEL_LOCK_UNLESS_NET_MPSAFE(); s = splnet(); /* Pop a link state change from the queue and process it. */ @@ -2346,10 +2343,7 @@ if_link_state_change_si(void *arg) softint_schedule(ifp->if_link_si); splx(s); -#ifndef NET_MPSAFE - KERNEL_UNLOCK_ONE(NULL); - mutex_exit(softnet_lock); -#endif + SOFTNET_KERNEL_UNLOCK_UNLESS_NET_MPSAFE(); } /* Index: src/sys/net/if.h diff -u src/sys/net/if.h:1.242 src/sys/net/if.h:1.243 --- src/sys/net/if.h:1.242 Thu Nov 16 03:07:18 2017 +++ src/sys/net/if.h Fri Nov 17 07:37:12 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: if.h,v 1.242 2017/11/16 03:07:18 ozaki-r Exp $ */ +/* $NetBSD: if.h,v 1.243 2017/11/17 07:37:12 ozaki-r Exp $ */ /*- * Copyright (c) 1999, 2000, 2001 The NetBSD Foundation, Inc. @@ -440,6 +440,46 @@ if_is_link_state_changeable(struct ifnet return ((ifp->if_extflags & IFEF_NO_LINK_STATE_CHANGE) == 0); } + +#ifdef _KERNEL_OPT +#include "opt_net_mpsafe.h" +#endif + +/* XXX explore a better place to define */ +#ifdef NET_MPSAFE + +#define KERNEL_LOCK_UNLESS_NET_MPSAFE() do { } while (0) +#define KERNEL_UNLOCK_UNLESS_NET_MPSAFE() do { } while (0) + +#define SOFTNET_LOCK_UNLESS_NET_MPSAFE() do { } while (0) +#define SOFTNET_UNLOCK_UNLESS_NET_MPSAFE() do { } while (0) + +#else /* NET_MPSAFE */ + +#define KERNEL_LOCK_UNLESS_NET_MPSAFE() \ + do { KERNEL_LOCK(1, NULL); } while (0) +#define KERNEL_UNLOCK_UNLESS_NET_MPSAFE() \ + do { KERNEL_UNLOCK_ONE(NULL); } while (0) + +#define SOFTNET_LOCK_UNLESS_NET_MPSAFE() \ + do { mutex_enter(softnet_lock); } while (0) +#define SOFTNET_UNLOCK_UNLESS_NET_MPSAFE() \ + do { mutex_exit(softnet_lock); } while (0) + +#endif /* NET_MPSAFE */ + +#define SOFTNET_KERNEL_LOCK_UNLESS_NET_MPSAFE() \ + do { \ + SOFTNET_LOCK_UNLESS_NET_MPSAFE(); \ + KERNEL_LOCK_UNLESS_NET_MPSAFE(); \ + } while (0) + +#define SOFTNET_KERNEL_UNLOCK_UNLESS_NET_MPSAFE() \ + do { \ + KERNEL_UNLOCK_UNLESS_NET_MPSAFE(); \ + SOFTNET_UNLOCK_UNLESS_NET_MPSAFE(); \ + } while (0) + #endif /* _KERNEL */ #define IFFBITS \ Index: src/sys/net/if_loop.c diff -u src/sys/net/if_loop.c:1.98 src/sys/net/if_loop.c:1.99 --- src/sys/net/if_loop.c:1.98 Thu Nov 16 03:07:18 2017 +++ src/sys/net/if_loop.c Fri Nov 17 07:37:12 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: if_loop.c,v 1.98 2017/11/16 03:07:18 ozaki-r Exp $ */ +/* $NetBSD: if_loop.c,v 1.99 2017/11/17 07:37:12 ozaki-r Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -65,7 +65,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_loop.c,v 1.98 2017/11/16 03:07:18 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_loop.c,v 1.99 2017/11/17 07:37:12 ozaki-r Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -247,9 +247,7 @@ looutput(struct ifnet *ifp, struct mbuf MCLAIM(m, ifp->if_mowner); -#ifndef NET_MPSAFE - KERNEL_LOCK(1, NULL); -#endif + KERNEL_LOCK_UNLESS_NET_MPSAFE(); if ((m->m_flags & M_PKTHDR) == 0) panic("looutput: no header mbuf"); @@ -375,9 +373,7 @@ looutput(struct ifnet *ifp, struct mbuf schednetisr(isr); splx(s); out: -#ifndef NET_MPSAFE - KERNEL_UNLOCK_ONE(NULL); -#endif + KERNEL_UNLOCK_UNLESS_NET_MPSAFE(); return error; } Index: src/sys/net/if_pppoe.c diff -u src/sys/net/if_pppoe.c:1.131 src/sys/net/if_pppoe.c:1.132 --- src/sys/net/if_pppoe.c:1.131 Thu Nov 16 03:07:18 2017 +++ src/sys/net/if_pppoe.c Fri Nov 17 07:37:12 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: if_pppoe.c,v 1.131 2017/11/16 03:07:18 ozaki-r Exp $ */ +/* $NetBSD: if_pppoe.c,v 1.132 2017/11/17 07:37:12 ozaki-r Exp $ */ /*- * Copyright (c) 2002, 2008 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_pppoe.c,v 1.131 2017/11/16 03:07:18 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_pppoe.c,v 1.132 2017/11/17 07:37:12 ozaki-r Exp $"); #ifdef _KERNEL_OPT #include "pppoe.h" @@ -477,9 +477,7 @@ pppoeintr(void) struct mbuf *m; int disc_done, data_done; -#ifndef PPPOE_MPSAFE - mutex_enter(softnet_lock); -#endif + SOFTNET_LOCK_UNLESS_NET_MPSAFE(); do { disc_done = 0; @@ -502,9 +500,8 @@ pppoeintr(void) pppoe_data_input(m); } } while (disc_done || data_done); -#ifndef PPPOE_MPSAFE - mutex_exit(softnet_lock); -#endif + + SOFTNET_UNLOCK_UNLESS_NET_MPSAFE(); } /* analyze and handle a single received packet while not in session state */ Index: src/sys/net/rtsock.c diff -u src/sys/net/rtsock.c:1.229 src/sys/net/rtsock.c:1.230 --- src/sys/net/rtsock.c:1.229 Mon Sep 25 01:57:54 2017 +++ src/sys/net/rtsock.c Fri Nov 17 07:37:12 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: rtsock.c,v 1.229 2017/09/25 01:57:54 ozaki-r Exp $ */ +/* $NetBSD: rtsock.c,v 1.230 2017/11/17 07:37:12 ozaki-r Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -61,7 +61,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rtsock.c,v 1.229 2017/09/25 01:57:54 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rtsock.c,v 1.230 2017/11/17 07:37:12 ozaki-r Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -2038,10 +2038,7 @@ COMPATNAME(route_intr)(void *cookie) struct route_info * const ri = &COMPATNAME(route_info); struct mbuf *m; -#ifndef NET_MPSAFE - mutex_enter(softnet_lock); - KERNEL_LOCK(1, NULL); -#endif + SOFTNET_KERNEL_LOCK_UNLESS_NET_MPSAFE(); for (;;) { IFQ_LOCK(&ri->ri_intrq); IF_DEQUEUE(&ri->ri_intrq, m); @@ -2057,10 +2054,7 @@ COMPATNAME(route_intr)(void *cookie) mutex_exit(rt_so_mtx); #endif } -#ifndef NET_MPSAFE - KERNEL_UNLOCK_ONE(NULL); - mutex_exit(softnet_lock); -#endif + SOFTNET_KERNEL_UNLOCK_UNLESS_NET_MPSAFE(); } /* Index: src/sys/net/npf/npf_os.c diff -u src/sys/net/npf/npf_os.c:1.7 src/sys/net/npf/npf_os.c:1.8 --- src/sys/net/npf/npf_os.c:1.7 Thu Jul 20 23:37:56 2017 +++ src/sys/net/npf/npf_os.c Fri Nov 17 07:37:12 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: npf_os.c,v 1.7 2017/07/20 23:37:56 pgoyette Exp $ */ +/* $NetBSD: npf_os.c,v 1.8 2017/11/17 07:37:12 ozaki-r Exp $ */ /*- * Copyright (c) 2009-2016 The NetBSD Foundation, Inc. @@ -35,7 +35,7 @@ #ifdef _KERNEL #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: npf_os.c,v 1.7 2017/07/20 23:37:56 pgoyette Exp $"); +__KERNEL_RCSID(0, "$NetBSD: npf_os.c,v 1.8 2017/11/17 07:37:12 ozaki-r Exp $"); #ifdef _KERNEL_OPT #include "pf.h" @@ -397,10 +397,7 @@ npf_pfil_register(bool init) npf_t *npf = npf_getkernctx(); int error = 0; -#ifndef NET_MPSAFE - mutex_enter(softnet_lock); - KERNEL_LOCK(1, NULL); -#endif + SOFTNET_KERNEL_LOCK_UNLESS_NET_MPSAFE(); /* Init: interface re-config and attach/detach hook. */ if (!npf_ph_if) { @@ -455,10 +452,7 @@ npf_pfil_register(bool init) npf_ifaddr_syncall(npf); pfil_registered = true; out: -#ifndef NET_MPSAFE - KERNEL_UNLOCK_ONE(NULL); - mutex_exit(softnet_lock); -#endif + SOFTNET_KERNEL_UNLOCK_UNLESS_NET_MPSAFE(); return error; } @@ -471,10 +465,7 @@ npf_pfil_unregister(bool fini) { npf_t *npf = npf_getkernctx(); -#ifndef NET_MPSAFE - mutex_enter(softnet_lock); - KERNEL_LOCK(1, NULL); -#endif + SOFTNET_KERNEL_LOCK_UNLESS_NET_MPSAFE(); if (fini && npf_ph_if) { (void)pfil_remove_ihook(npf_ifhook, NULL, @@ -492,10 +483,7 @@ npf_pfil_unregister(bool fini) } pfil_registered = false; -#ifndef NET_MPSAFE - KERNEL_UNLOCK_ONE(NULL); - mutex_exit(softnet_lock); -#endif + SOFTNET_KERNEL_UNLOCK_UNLESS_NET_MPSAFE(); } bool Index: src/sys/netinet/if_arp.c diff -u src/sys/netinet/if_arp.c:1.254 src/sys/netinet/if_arp.c:1.255 --- src/sys/netinet/if_arp.c:1.254 Fri Nov 10 07:24:28 2017 +++ src/sys/netinet/if_arp.c Fri Nov 17 07:37:12 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: if_arp.c,v 1.254 2017/11/10 07:24:28 ozaki-r Exp $ */ +/* $NetBSD: if_arp.c,v 1.255 2017/11/17 07:37:12 ozaki-r Exp $ */ /*- * Copyright (c) 1998, 2000, 2008 The NetBSD Foundation, Inc. @@ -68,7 +68,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_arp.c,v 1.254 2017/11/10 07:24:28 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_arp.c,v 1.255 2017/11/17 07:37:12 ozaki-r Exp $"); #ifdef _KERNEL_OPT #include "opt_ddb.h" @@ -920,10 +920,7 @@ arpintr(void) int s; int arplen; -#ifndef NET_MPSAFE - mutex_enter(softnet_lock); - KERNEL_LOCK(1, NULL); -#endif + SOFTNET_KERNEL_LOCK_UNLESS_NET_MPSAFE(); for (;;) { struct ifnet *rcvif; @@ -980,12 +977,8 @@ free: m_freem(m); } out: -#ifndef NET_MPSAFE - KERNEL_UNLOCK_ONE(NULL); - mutex_exit(softnet_lock); -#else + SOFTNET_KERNEL_UNLOCK_UNLESS_NET_MPSAFE(); return; /* XXX gcc */ -#endif } /* @@ -1689,10 +1682,7 @@ arp_dad_timer(struct ifaddr *ifa) char ipbuf[INET_ADDRSTRLEN]; bool need_free = false; -#ifndef NET_MPSAFE - mutex_enter(softnet_lock); - KERNEL_LOCK(1, NULL); -#endif + SOFTNET_KERNEL_LOCK_UNLESS_NET_MPSAFE(); mutex_enter(&arp_dad_lock); /* Sanity check */ @@ -1783,10 +1773,7 @@ done: ifafree(ifa); } -#ifndef NET_MPSAFE - KERNEL_UNLOCK_ONE(NULL); - mutex_exit(softnet_lock); -#endif + SOFTNET_KERNEL_UNLOCK_UNLESS_NET_MPSAFE(); } static void Index: src/sys/netinet/igmp.c diff -u src/sys/netinet/igmp.c:1.64 src/sys/netinet/igmp.c:1.65 --- src/sys/netinet/igmp.c:1.64 Tue Jan 24 07:09:24 2017 +++ src/sys/netinet/igmp.c Fri Nov 17 07:37:12 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: igmp.c,v 1.64 2017/01/24 07:09:24 ozaki-r Exp $ */ +/* $NetBSD: igmp.c,v 1.65 2017/11/17 07:37:12 ozaki-r Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -40,7 +40,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: igmp.c,v 1.64 2017/01/24 07:09:24 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: igmp.c,v 1.65 2017/11/17 07:37:12 ozaki-r Exp $"); #ifdef _KERNEL_OPT #include "opt_mrouting.h" @@ -542,10 +542,8 @@ igmp_fasttimo(void) return; } -#ifndef NET_MPSAFE /* XXX: Needed for ip_output(). */ - mutex_enter(softnet_lock); -#endif + SOFTNET_LOCK_UNLESS_NET_MPSAFE(); in_multi_lock(RW_WRITER); igmp_timers_on = false; @@ -569,9 +567,7 @@ igmp_fasttimo(void) inm = in_next_multi(&step); } in_multi_unlock(); -#ifndef NET_MPSAFE - mutex_exit(softnet_lock); -#endif + SOFTNET_UNLOCK_UNLESS_NET_MPSAFE(); } void Index: src/sys/netinet/in.c diff -u src/sys/netinet/in.c:1.209 src/sys/netinet/in.c:1.210 --- src/sys/netinet/in.c:1.209 Fri Nov 10 07:24:28 2017 +++ src/sys/netinet/in.c Fri Nov 17 07:37:12 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: in.c,v 1.209 2017/11/10 07:24:28 ozaki-r Exp $ */ +/* $NetBSD: in.c,v 1.210 2017/11/17 07:37:12 ozaki-r Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -91,7 +91,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: in.c,v 1.209 2017/11/10 07:24:28 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: in.c,v 1.210 2017/11/17 07:37:12 ozaki-r Exp $"); #include "arp.h" @@ -751,13 +751,9 @@ in_control(struct socket *so, u_long cmd { int error; -#ifndef NET_MPSAFE - mutex_enter(softnet_lock); -#endif + SOFTNET_LOCK_UNLESS_NET_MPSAFE(); error = in_control0(so, cmd, data, ifp); -#ifndef NET_MPSAFE - mutex_exit(softnet_lock); -#endif + SOFTNET_UNLOCK_UNLESS_NET_MPSAFE(); return error; } Index: src/sys/netinet/ip_flow.c diff -u src/sys/netinet/ip_flow.c:1.80 src/sys/netinet/ip_flow.c:1.81 --- src/sys/netinet/ip_flow.c:1.80 Tue Feb 7 02:38:08 2017 +++ src/sys/netinet/ip_flow.c Fri Nov 17 07:37:12 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: ip_flow.c,v 1.80 2017/02/07 02:38:08 ozaki-r Exp $ */ +/* $NetBSD: ip_flow.c,v 1.81 2017/11/17 07:37:12 ozaki-r Exp $ */ /*- * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ip_flow.c,v 1.80 2017/02/07 02:38:08 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ip_flow.c,v 1.81 2017/11/17 07:37:12 ozaki-r Exp $"); #ifdef _KERNEL_OPT #include "opt_net_mpsafe.h" @@ -482,10 +482,7 @@ ipflow_slowtimo_work(struct work *wk, vo /* We can allow enqueuing another work at this point */ atomic_swap_uint(&ipflow_work_enqueued, 0); -#ifndef NET_MPSAFE - mutex_enter(softnet_lock); - KERNEL_LOCK(1, NULL); -#endif + SOFTNET_KERNEL_LOCK_UNLESS_NET_MPSAFE(); mutex_enter(&ipflow_lock); for (ipf = TAILQ_FIRST(&ipflowlist); ipf != NULL; ipf = next_ipf) { next_ipf = TAILQ_NEXT(ipf, ipf_list); @@ -505,10 +502,7 @@ ipflow_slowtimo_work(struct work *wk, vo } } mutex_exit(&ipflow_lock); -#ifndef NET_MPSAFE - KERNEL_UNLOCK_ONE(NULL); - mutex_exit(softnet_lock); -#endif + SOFTNET_KERNEL_UNLOCK_UNLESS_NET_MPSAFE(); } void @@ -529,9 +523,7 @@ ipflow_create(struct route *ro, struct m struct ipflow *ipf; size_t hash; -#ifndef NET_MPSAFE - KERNEL_LOCK(1, NULL); -#endif + KERNEL_LOCK_UNLESS_NET_MPSAFE(); mutex_enter(&ipflow_lock); /* @@ -582,9 +574,7 @@ ipflow_create(struct route *ro, struct m out: mutex_exit(&ipflow_lock); -#ifndef NET_MPSAFE - KERNEL_UNLOCK_ONE(NULL); -#endif + KERNEL_UNLOCK_UNLESS_NET_MPSAFE(); } int @@ -622,19 +612,13 @@ sysctl_net_inet_ip_maxflows(SYSCTLFN_ARG if (error || newp == NULL) return (error); -#ifndef NET_MPSAFE - mutex_enter(softnet_lock); - KERNEL_LOCK(1, NULL); -#endif + SOFTNET_KERNEL_LOCK_UNLESS_NET_MPSAFE(); mutex_enter(&ipflow_lock); ipflow_reap(false); mutex_exit(&ipflow_lock); -#ifndef NET_MPSAFE - KERNEL_UNLOCK_ONE(NULL); - mutex_exit(softnet_lock); -#endif + SOFTNET_KERNEL_UNLOCK_UNLESS_NET_MPSAFE(); return (0); } @@ -656,15 +640,9 @@ sysctl_net_inet_ip_hashsize(SYSCTLFN_ARG /* * Can only fail due to malloc() */ -#ifndef NET_MPSAFE - mutex_enter(softnet_lock); - KERNEL_LOCK(1, NULL); -#endif + SOFTNET_KERNEL_LOCK_UNLESS_NET_MPSAFE(); error = ipflow_invalidate_all(tmp); -#ifndef NET_MPSAFE - KERNEL_UNLOCK_ONE(NULL); - mutex_exit(softnet_lock); -#endif + SOFTNET_KERNEL_UNLOCK_UNLESS_NET_MPSAFE(); } else { /* * EINVAL if not a power of 2 Index: src/sys/netinet/ip_input.c diff -u src/sys/netinet/ip_input.c:1.361 src/sys/netinet/ip_input.c:1.362 --- src/sys/netinet/ip_input.c:1.361 Wed Sep 27 10:05:04 2017 +++ src/sys/netinet/ip_input.c Fri Nov 17 07:37:12 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: ip_input.c,v 1.361 2017/09/27 10:05:04 ozaki-r Exp $ */ +/* $NetBSD: ip_input.c,v 1.362 2017/11/17 07:37:12 ozaki-r Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -91,7 +91,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ip_input.c,v 1.361 2017/09/27 10:05:04 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ip_input.c,v 1.362 2017/11/17 07:37:12 ozaki-r Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -426,15 +426,11 @@ ipintr(void *arg __unused) KASSERT(cpu_softintr_p()); -#ifndef NET_MPSAFE - mutex_enter(softnet_lock); -#endif + SOFTNET_LOCK_UNLESS_NET_MPSAFE(); while ((m = pktq_dequeue(ip_pktq)) != NULL) { ip_input(m); } -#ifndef NET_MPSAFE - mutex_exit(softnet_lock); -#endif + SOFTNET_UNLOCK_UNLESS_NET_MPSAFE(); } /* @@ -842,17 +838,11 @@ void ip_slowtimo(void) { -#ifndef NET_MPSAFE - mutex_enter(softnet_lock); - KERNEL_LOCK(1, NULL); -#endif + SOFTNET_KERNEL_LOCK_UNLESS_NET_MPSAFE(); ip_reass_slowtimo(); -#ifndef NET_MPSAFE - KERNEL_UNLOCK_ONE(NULL); - mutex_exit(softnet_lock); -#endif + SOFTNET_KERNEL_UNLOCK_UNLESS_NET_MPSAFE(); } /* Index: src/sys/netinet/ip_output.c diff -u src/sys/netinet/ip_output.c:1.284 src/sys/netinet/ip_output.c:1.285 --- src/sys/netinet/ip_output.c:1.284 Thu Aug 10 04:31:58 2017 +++ src/sys/netinet/ip_output.c Fri Nov 17 07:37:12 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: ip_output.c,v 1.284 2017/08/10 04:31:58 ryo Exp $ */ +/* $NetBSD: ip_output.c,v 1.285 2017/11/17 07:37:12 ozaki-r Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -91,7 +91,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ip_output.c,v 1.284 2017/08/10 04:31:58 ryo Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ip_output.c,v 1.285 2017/11/17 07:37:12 ozaki-r Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -2072,13 +2072,9 @@ ip_mloopback(struct ifnet *ifp, struct m ip->ip_sum = 0; ip->ip_sum = in_cksum(copym, ip->ip_hl << 2); -#ifndef NET_MPSAFE - KERNEL_LOCK(1, NULL); -#endif + KERNEL_LOCK_UNLESS_NET_MPSAFE(); (void)looutput(ifp, copym, sintocsa(dst), NULL); -#ifndef NET_MPSAFE - KERNEL_UNLOCK_ONE(NULL); -#endif + KERNEL_UNLOCK_UNLESS_NET_MPSAFE(); } /* Index: src/sys/netinet6/frag6.c diff -u src/sys/netinet6/frag6.c:1.60 src/sys/netinet6/frag6.c:1.61 --- src/sys/netinet6/frag6.c:1.60 Tue Jan 24 07:09:25 2017 +++ src/sys/netinet6/frag6.c Fri Nov 17 07:37:12 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: frag6.c,v 1.60 2017/01/24 07:09:25 ozaki-r Exp $ */ +/* $NetBSD: frag6.c,v 1.61 2017/11/17 07:37:12 ozaki-r Exp $ */ /* $KAME: frag6.c,v 1.40 2002/05/27 21:40:31 itojun Exp $ */ /* @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: frag6.c,v 1.60 2017/01/24 07:09:25 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: frag6.c,v 1.61 2017/11/17 07:37:12 ozaki-r Exp $"); #ifdef _KERNEL_OPT #include "opt_net_mpsafe.h" @@ -597,20 +597,14 @@ void frag6_fasttimo(void) { -#ifndef NET_MPSAFE - mutex_enter(softnet_lock); - KERNEL_LOCK(1, NULL); -#endif + SOFTNET_KERNEL_LOCK_UNLESS_NET_MPSAFE(); if (frag6_drainwanted) { frag6_drain(); frag6_drainwanted = 0; } -#ifndef NET_MPSAFE - KERNEL_UNLOCK_ONE(NULL); - mutex_exit(softnet_lock); -#endif + SOFTNET_KERNEL_UNLOCK_UNLESS_NET_MPSAFE(); } /* @@ -623,10 +617,7 @@ frag6_slowtimo(void) { struct ip6q *q6; -#ifndef NET_MPSAFE - mutex_enter(softnet_lock); - KERNEL_LOCK(1, NULL); -#endif + SOFTNET_KERNEL_LOCK_UNLESS_NET_MPSAFE(); mutex_enter(&frag6_lock); q6 = ip6q.ip6q_next; @@ -653,10 +644,7 @@ frag6_slowtimo(void) } mutex_exit(&frag6_lock); -#ifndef NET_MPSAFE - KERNEL_UNLOCK_ONE(NULL); - mutex_exit(softnet_lock); -#endif + SOFTNET_KERNEL_UNLOCK_UNLESS_NET_MPSAFE(); #if 0 /* Index: src/sys/netinet6/in6.c diff -u src/sys/netinet6/in6.c:1.250 src/sys/netinet6/in6.c:1.251 --- src/sys/netinet6/in6.c:1.250 Fri Nov 10 07:24:28 2017 +++ src/sys/netinet6/in6.c Fri Nov 17 07:37:12 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: in6.c,v 1.250 2017/11/10 07:24:28 ozaki-r Exp $ */ +/* $NetBSD: in6.c,v 1.251 2017/11/17 07:37:12 ozaki-r Exp $ */ /* $KAME: in6.c,v 1.198 2001/07/18 09:12:38 itojun Exp $ */ /* @@ -62,7 +62,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: in6.c,v 1.250 2017/11/10 07:24:28 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: in6.c,v 1.251 2017/11/17 07:37:12 ozaki-r Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -767,13 +767,9 @@ in6_control(struct socket *so, u_long cm } s = splsoftnet(); -#ifndef NET_MPSAFE - mutex_enter(softnet_lock); -#endif + SOFTNET_LOCK_UNLESS_NET_MPSAFE(); error = in6_control1(so , cmd, data, ifp); -#ifndef NET_MPSAFE - mutex_exit(softnet_lock); -#endif + SOFTNET_UNLOCK_UNLESS_NET_MPSAFE(); splx(s); return error; } @@ -2709,13 +2705,9 @@ in6_domifdetach(struct ifnet *ifp, void lltable_free(ext->lltable); ext->lltable = NULL; -#ifndef NET_MPSAFE - mutex_enter(softnet_lock); -#endif + SOFTNET_LOCK_UNLESS_NET_MPSAFE(); nd6_ifdetach(ifp, ext); -#ifndef NET_MPSAFE - mutex_exit(softnet_lock); -#endif + SOFTNET_UNLOCK_UNLESS_NET_MPSAFE(); free(ext->in6_ifstat, M_IFADDR); free(ext->icmp6_ifstat, M_IFADDR); scope6_ifdetach(ext->scope6_id); Index: src/sys/netinet6/ip6_flow.c diff -u src/sys/netinet6/ip6_flow.c:1.34 src/sys/netinet6/ip6_flow.c:1.35 --- src/sys/netinet6/ip6_flow.c:1.34 Wed Jan 11 13:08:29 2017 +++ src/sys/netinet6/ip6_flow.c Fri Nov 17 07:37:12 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: ip6_flow.c,v 1.34 2017/01/11 13:08:29 ozaki-r Exp $ */ +/* $NetBSD: ip6_flow.c,v 1.35 2017/11/17 07:37:12 ozaki-r Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -38,7 +38,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ip6_flow.c,v 1.34 2017/01/11 13:08:29 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ip6_flow.c,v 1.35 2017/11/17 07:37:12 ozaki-r Exp $"); #ifdef _KERNEL_OPT #include "opt_net_mpsafe.h" @@ -519,10 +519,7 @@ ip6flow_slowtimo_work(struct work *wk, v /* We can allow enqueuing another work at this point */ atomic_swap_uint(&ip6flow_work_enqueued, 0); -#ifndef NET_MPSAFE - mutex_enter(softnet_lock); - KERNEL_LOCK(1, NULL); -#endif + SOFTNET_KERNEL_LOCK_UNLESS_NET_MPSAFE(); mutex_enter(&ip6flow_lock); for (ip6f = TAILQ_FIRST(&ip6flowlist); ip6f != NULL; ip6f = next_ip6f) { @@ -542,10 +539,7 @@ ip6flow_slowtimo_work(struct work *wk, v } mutex_exit(&ip6flow_lock); -#ifndef NET_MPSAFE - KERNEL_UNLOCK_ONE(NULL); - mutex_exit(softnet_lock); -#endif + SOFTNET_KERNEL_UNLOCK_UNLESS_NET_MPSAFE(); } void @@ -572,9 +566,7 @@ ip6flow_create(struct route *ro, struct ip6 = mtod(m, const struct ip6_hdr *); -#ifndef NET_MPSAFE - KERNEL_LOCK(1, NULL); -#endif + KERNEL_LOCK_UNLESS_NET_MPSAFE(); mutex_enter(&ip6flow_lock); /* @@ -636,9 +628,7 @@ ip6flow_create(struct route *ro, struct out: mutex_exit(&ip6flow_lock); -#ifndef NET_MPSAFE - KERNEL_UNLOCK_ONE(NULL); -#endif + KERNEL_UNLOCK_UNLESS_NET_MPSAFE(); } /* @@ -681,17 +671,11 @@ sysctl_net_inet6_ip6_maxflows(SYSCTLFN_A if (error || newp == NULL) return (error); -#ifndef NET_MPSAFE - mutex_enter(softnet_lock); - KERNEL_LOCK(1, NULL); -#endif + SOFTNET_KERNEL_LOCK_UNLESS_NET_MPSAFE(); ip6flow_reap(0); -#ifndef NET_MPSAFE - KERNEL_UNLOCK_ONE(NULL); - mutex_exit(softnet_lock); -#endif + SOFTNET_KERNEL_UNLOCK_UNLESS_NET_MPSAFE(); return (0); } @@ -713,15 +697,9 @@ sysctl_net_inet6_ip6_hashsize(SYSCTLFN_A /* * Can only fail due to malloc() */ -#ifndef NET_MPSAFE - mutex_enter(softnet_lock); - KERNEL_LOCK(1, NULL); -#endif + SOFTNET_KERNEL_LOCK_UNLESS_NET_MPSAFE(); error = ip6flow_invalidate_all(tmp); -#ifndef NET_MPSAFE - KERNEL_UNLOCK_ONE(NULL); - mutex_exit(softnet_lock); -#endif + SOFTNET_KERNEL_UNLOCK_UNLESS_NET_MPSAFE(); } else { /* * EINVAL if not a power of 2 Index: src/sys/netinet6/ip6_input.c diff -u src/sys/netinet6/ip6_input.c:1.182 src/sys/netinet6/ip6_input.c:1.183 --- src/sys/netinet6/ip6_input.c:1.182 Wed Sep 27 10:05:05 2017 +++ src/sys/netinet6/ip6_input.c Fri Nov 17 07:37:12 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: ip6_input.c,v 1.182 2017/09/27 10:05:05 ozaki-r Exp $ */ +/* $NetBSD: ip6_input.c,v 1.183 2017/11/17 07:37:12 ozaki-r Exp $ */ /* $KAME: ip6_input.c,v 1.188 2001/03/29 05:34:31 itojun Exp $ */ /* @@ -62,7 +62,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ip6_input.c,v 1.182 2017/09/27 10:05:05 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ip6_input.c,v 1.183 2017/11/17 07:37:12 ozaki-r Exp $"); #ifdef _KERNEL_OPT #include "opt_gateway.h" @@ -222,9 +222,7 @@ ip6intr(void *arg __unused) { struct mbuf *m; -#ifndef NET_MPSAFE - mutex_enter(softnet_lock); -#endif + SOFTNET_LOCK_UNLESS_NET_MPSAFE(); while ((m = pktq_dequeue(ip6_pktq)) != NULL) { struct psref psref; struct ifnet *rcvif = m_get_rcvif_psref(m, &psref); @@ -244,9 +242,7 @@ ip6intr(void *arg __unused) ip6_input(m, rcvif); m_put_rcvif_psref(rcvif, &psref); } -#ifndef NET_MPSAFE - mutex_exit(softnet_lock); -#endif + SOFTNET_UNLOCK_UNLESS_NET_MPSAFE(); } void Index: src/sys/netinet6/mld6.c diff -u src/sys/netinet6/mld6.c:1.89 src/sys/netinet6/mld6.c:1.90 --- src/sys/netinet6/mld6.c:1.89 Sat May 13 20:13:26 2017 +++ src/sys/netinet6/mld6.c Fri Nov 17 07:37:12 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: mld6.c,v 1.89 2017/05/13 20:13:26 kardel Exp $ */ +/* $NetBSD: mld6.c,v 1.90 2017/11/17 07:37:12 ozaki-r Exp $ */ /* $KAME: mld6.c,v 1.25 2001/01/16 14:14:18 itojun Exp $ */ /* @@ -102,7 +102,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: mld6.c,v 1.89 2017/05/13 20:13:26 kardel Exp $"); +__KERNEL_RCSID(0, "$NetBSD: mld6.c,v 1.90 2017/11/17 07:37:12 ozaki-r Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -242,10 +242,7 @@ mld_timeo(void *arg) KASSERT(in6m->in6m_refcount > 0); -#ifndef NET_MPSAFE - mutex_enter(softnet_lock); - KERNEL_LOCK(1, NULL); -#endif + SOFTNET_KERNEL_LOCK_UNLESS_NET_MPSAFE(); rw_enter(&in6_multilock, RW_WRITER); if (in6m->in6m_timer == IN6M_TIMER_UNDEF) goto out; @@ -263,12 +260,7 @@ mld_timeo(void *arg) out: rw_exit(&in6_multilock); -#ifndef NET_MPSAFE - KERNEL_UNLOCK_ONE(NULL); - mutex_exit(softnet_lock); -#else - return; -#endif + SOFTNET_KERNEL_UNLOCK_UNLESS_NET_MPSAFE(); } static u_long Index: src/sys/netinet6/nd6.c diff -u src/sys/netinet6/nd6.c:1.238 src/sys/netinet6/nd6.c:1.239 --- src/sys/netinet6/nd6.c:1.238 Fri Nov 10 07:25:39 2017 +++ src/sys/netinet6/nd6.c Fri Nov 17 07:37:12 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: nd6.c,v 1.238 2017/11/10 07:25:39 ozaki-r Exp $ */ +/* $NetBSD: nd6.c,v 1.239 2017/11/17 07:37:12 ozaki-r Exp $ */ /* $KAME: nd6.c,v 1.279 2002/06/08 11:16:51 itojun Exp $ */ /* @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: nd6.c,v 1.238 2017/11/10 07:25:39 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: nd6.c,v 1.239 2017/11/17 07:37:12 ozaki-r Exp $"); #ifdef _KERNEL_OPT #include "opt_net_mpsafe.h" @@ -450,10 +450,7 @@ nd6_llinfo_timer(void *arg) bool send_ns = false; const struct in6_addr *daddr6 = NULL; -#ifndef NET_MPSAFE - mutex_enter(softnet_lock); - KERNEL_LOCK(1, NULL); -#endif + SOFTNET_KERNEL_LOCK_UNLESS_NET_MPSAFE(); LLE_WLOCK(ln); if ((ln->la_flags & LLE_LINKED) == 0) goto out; @@ -569,10 +566,7 @@ nd6_llinfo_timer(void *arg) out: if (ln != NULL) LLE_FREE_LOCKED(ln); -#ifndef NET_MPSAFE - KERNEL_UNLOCK_ONE(NULL); - mutex_exit(softnet_lock); -#endif + SOFTNET_KERNEL_UNLOCK_UNLESS_NET_MPSAFE(); } /* @@ -590,10 +584,7 @@ nd6_timer_work(struct work *wk, void *ar callout_reset(&nd6_timer_ch, nd6_prune * hz, nd6_timer, NULL); -#ifndef NET_MPSAFE - mutex_enter(softnet_lock); - KERNEL_LOCK(1, NULL); -#endif + SOFTNET_KERNEL_LOCK_UNLESS_NET_MPSAFE(); /* expire default router list */ @@ -717,10 +708,7 @@ nd6_timer_work(struct work *wk, void *ar } ND6_UNLOCK(); -#ifndef NET_MPSAFE - KERNEL_UNLOCK_ONE(NULL); - mutex_exit(softnet_lock); -#endif + SOFTNET_KERNEL_UNLOCK_UNLESS_NET_MPSAFE(); } static void @@ -2228,10 +2216,7 @@ nd6_slowtimo(void *ignored_arg) struct ifnet *ifp; int s; -#ifndef NET_MPSAFE - mutex_enter(softnet_lock); - KERNEL_LOCK(1, NULL); -#endif + SOFTNET_KERNEL_LOCK_UNLESS_NET_MPSAFE(); callout_reset(&nd6_slowtimo_ch, ND6_SLOWTIMER_INTERVAL * hz, nd6_slowtimo, NULL); @@ -2252,10 +2237,7 @@ nd6_slowtimo(void *ignored_arg) } pserialize_read_exit(s); -#ifndef NET_MPSAFE - KERNEL_UNLOCK_ONE(NULL); - mutex_exit(softnet_lock); -#endif + SOFTNET_KERNEL_UNLOCK_UNLESS_NET_MPSAFE(); } /* Index: src/sys/netinet6/nd6_nbr.c diff -u src/sys/netinet6/nd6_nbr.c:1.138 src/sys/netinet6/nd6_nbr.c:1.139 --- src/sys/netinet6/nd6_nbr.c:1.138 Tue Mar 14 04:25:10 2017 +++ src/sys/netinet6/nd6_nbr.c Fri Nov 17 07:37:12 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: nd6_nbr.c,v 1.138 2017/03/14 04:25:10 ozaki-r Exp $ */ +/* $NetBSD: nd6_nbr.c,v 1.139 2017/11/17 07:37:12 ozaki-r Exp $ */ /* $KAME: nd6_nbr.c,v 1.61 2001/02/10 16:06:14 jinmei Exp $ */ /* @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: nd6_nbr.c,v 1.138 2017/03/14 04:25:10 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: nd6_nbr.c,v 1.139 2017/11/17 07:37:12 ozaki-r Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -1228,10 +1228,7 @@ nd6_dad_timer(struct ifaddr *ifa) char ip6buf[INET6_ADDRSTRLEN]; bool need_free = false; -#ifndef NET_MPSAFE - mutex_enter(softnet_lock); - KERNEL_LOCK(1, NULL); -#endif + SOFTNET_KERNEL_LOCK_UNLESS_NET_MPSAFE(); mutex_enter(&nd6_dad_lock); /* Sanity check */ @@ -1327,10 +1324,7 @@ done: if (duplicate) nd6_dad_duplicated(ifa); -#ifndef NET_MPSAFE - KERNEL_UNLOCK_ONE(NULL); - mutex_exit(softnet_lock); -#endif + SOFTNET_KERNEL_UNLOCK_UNLESS_NET_MPSAFE(); } static void Index: src/sys/netipsec/ipsec_output.c diff -u src/sys/netipsec/ipsec_output.c:1.64 src/sys/netipsec/ipsec_output.c:1.65 --- src/sys/netipsec/ipsec_output.c:1.64 Tue Oct 3 08:56:52 2017 +++ src/sys/netipsec/ipsec_output.c Fri Nov 17 07:37:12 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: ipsec_output.c,v 1.64 2017/10/03 08:56:52 ozaki-r Exp $ */ +/* $NetBSD: ipsec_output.c,v 1.65 2017/11/17 07:37:12 ozaki-r Exp $ */ /*- * Copyright (c) 2002, 2003 Sam Leffler, Errno Consulting @@ -29,7 +29,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ipsec_output.c,v 1.64 2017/10/03 08:56:52 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ipsec_output.c,v 1.65 2017/11/17 07:37:12 ozaki-r Exp $"); /* * IPsec output processing. @@ -117,9 +117,7 @@ ipsec_reinject_ipstack(struct mbuf *m, i KASSERT(af == AF_INET || af == AF_INET6); -#ifndef NET_MPSAFE - KERNEL_LOCK(1, NULL); -#endif + KERNEL_LOCK_UNLESS_NET_MPSAFE(); ro = percpu_getref(ipsec_rtcache_percpu); switch (af) { #ifdef INET @@ -139,9 +137,7 @@ ipsec_reinject_ipstack(struct mbuf *m, i #endif } percpu_putref(ipsec_rtcache_percpu); -#ifndef NET_MPSAFE - KERNEL_UNLOCK_ONE(NULL); -#endif + KERNEL_UNLOCK_UNLESS_NET_MPSAFE(); return rv; }