PERFORCE change 40865 for review
Sam Leffler
sam at FreeBSD.org
Thu Oct 30 13:27:14 PST 2003
http://perforce.freebsd.org/chv.cgi?CH=40865
Change 40865 by sam at sam_ebb on 2003/10/30 13:27:08
IFC @ 40864
Affected files ...
.. //depot/projects/netperf/sys/amd64/amd64/vm_machdep.c#6 integrate
.. //depot/projects/netperf/sys/dev/cm/smc90cx6.c#3 integrate
.. //depot/projects/netperf/sys/dev/cs/if_cs.c#3 integrate
.. //depot/projects/netperf/sys/dev/ed/if_ed.c#4 integrate
.. //depot/projects/netperf/sys/dev/sbni/if_sbni.c#3 integrate
.. //depot/projects/netperf/sys/dev/xe/if_xe.c#4 integrate
.. //depot/projects/netperf/sys/i386/isa/if_rdp.c#3 integrate
.. //depot/projects/netperf/sys/netinet6/in6_src.c#16 integrate
Differences ...
==== //depot/projects/netperf/sys/amd64/amd64/vm_machdep.c#6 (text+ko) ====
@@ -41,7 +41,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/vm_machdep.c,v 1.217 2003/08/29 20:04:09 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/vm_machdep.c,v 1.218 2003/10/30 19:04:58 peter Exp $");
#include "opt_isa.h"
#include "opt_kstack_pages.h"
@@ -205,7 +205,8 @@
cpu_thread_exit(struct thread *td)
{
- npxexit(td);
+ if (td == PCPU_GET(fpcurthread))
+ npxdrop();
}
void
@@ -265,6 +266,7 @@
* more analysis) (need a good safe default).
*/
bcopy(td0->td_pcb, pcb2, sizeof(*pcb2));
+ pcb2->pcb_flags &= ~(PCB_NPXTRAP|PCB_NPXINITDONE);
/*
* Create a new fresh stack for the new thread.
==== //depot/projects/netperf/sys/dev/cm/smc90cx6.c#3 (text+ko) ====
@@ -1,7 +1,7 @@
/* $NetBSD: smc90cx6.c,v 1.38 2001/07/07 15:57:53 thorpej Exp $ */
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/cm/smc90cx6.c,v 1.10 2003/08/24 17:46:02 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/cm/smc90cx6.c,v 1.11 2003/10/30 19:45:57 brooks Exp $");
/*-
* Copyright (c) 1994, 1995, 1998 The NetBSD Foundation, Inc.
@@ -312,34 +312,32 @@
*/
cm_stop(sc);
- if (!ifp->if_name) {
- ifp->if_softc = sc;
- ifp->if_unit = unit;
- ifp->if_name = "cm";
- ifp->if_output = arc_output;
- ifp->if_start = cm_start;
- ifp->if_ioctl = cm_ioctl;
- ifp->if_watchdog = cm_watchdog;
- ifp->if_init = cm_init;
- /* XXX IFQ_SET_READY(&ifp->if_snd); */
- ifp->if_snd.ifq_maxlen = IFQ_MAXLEN;
- ifp->if_timer = 0;
- ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX;
+ ifp->if_softc = sc;
+ ifp->if_unit = unit;
+ ifp->if_name = "cm";
+ ifp->if_output = arc_output;
+ ifp->if_start = cm_start;
+ ifp->if_ioctl = cm_ioctl;
+ ifp->if_watchdog = cm_watchdog;
+ ifp->if_init = cm_init;
+ /* XXX IFQ_SET_READY(&ifp->if_snd); */
+ ifp->if_snd.ifq_maxlen = IFQ_MAXLEN;
+ ifp->if_timer = 0;
+ ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX;
- arc_ifattach(ifp, linkaddress);
+ arc_ifattach(ifp, linkaddress);
#ifdef CMSOFTCOPY
- sc->sc_rxcookie = softintr_establish(IPL_SOFTNET, cm_srint, sc);
- sc->sc_txcookie = softintr_establish(IPL_SOFTNET,
- (void (*)(void *))cm_start, ifp);
+ sc->sc_rxcookie = softintr_establish(IPL_SOFTNET, cm_srint, sc);
+ sc->sc_txcookie = softintr_establish(IPL_SOFTNET,
+ (void (*)(void *))cm_start, ifp);
#endif
#if __FreeBSD_version < 500000
- callout_init(&sc->sc_recon_ch);
+ callout_init(&sc->sc_recon_ch);
#else
- callout_init(&sc->sc_recon_ch, 0);
+ callout_init(&sc->sc_recon_ch, 0);
#endif
- }
if_printf(ifp, "link addr 0x%02x (%d)\n", linkaddress, linkaddress);
return 0;
==== //depot/projects/netperf/sys/dev/cs/if_cs.c#3 (text+ko) ====
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/cs/if_cs.c,v 1.25 2003/08/24 17:46:03 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/cs/if_cs.c,v 1.26 2003/10/30 19:45:57 brooks Exp $");
/*
*
@@ -582,85 +582,83 @@
cs_stop( sc );
- if (!ifp->if_name) {
- ifp->if_softc=sc;
- ifp->if_unit=unit;
- ifp->if_name="cs";
- ifp->if_output=ether_output;
- ifp->if_start=cs_start;
- ifp->if_ioctl=cs_ioctl;
- ifp->if_watchdog=cs_watchdog;
- ifp->if_init=cs_init;
- ifp->if_snd.ifq_maxlen= IFQ_MAXLEN;
- /*
- * MIB DATA
- */
- /*
- ifp->if_linkmib=&sc->mibdata;
- ifp->if_linkmiblen=sizeof sc->mibdata;
- */
+ ifp->if_softc=sc;
+ ifp->if_unit=unit;
+ ifp->if_name="cs";
+ ifp->if_output=ether_output;
+ ifp->if_start=cs_start;
+ ifp->if_ioctl=cs_ioctl;
+ ifp->if_watchdog=cs_watchdog;
+ ifp->if_init=cs_init;
+ ifp->if_snd.ifq_maxlen= IFQ_MAXLEN;
+ /*
+ * MIB DATA
+ */
+ /*
+ ifp->if_linkmib=&sc->mibdata;
+ ifp->if_linkmiblen=sizeof sc->mibdata;
+ */
- ifp->if_flags=(IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST );
+ ifp->if_flags=(IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST );
- /*
- * this code still in progress (DMA support)
- *
+ /*
+ * this code still in progress (DMA support)
+ *
- sc->recv_ring=malloc(CS_DMA_BUFFER_SIZE<<1, M_DEVBUF, M_NOWAIT);
- if (sc->recv_ring == NULL) {
- log(LOG_ERR,CS_NAME
- "%d: Couldn't allocate memory for NIC\n", unit);
- return(0);
- }
- if ((sc->recv_ring-(sc->recv_ring & 0x1FFFF))
- < (128*1024-CS_DMA_BUFFER_SIZE))
- sc->recv_ring+=16*1024;
+ sc->recv_ring=malloc(CS_DMA_BUFFER_SIZE<<1, M_DEVBUF, M_NOWAIT);
+ if (sc->recv_ring == NULL) {
+ log(LOG_ERR,CS_NAME
+ "%d: Couldn't allocate memory for NIC\n", unit);
+ return(0);
+ }
+ if ((sc->recv_ring-(sc->recv_ring & 0x1FFFF))
+ < (128*1024-CS_DMA_BUFFER_SIZE))
+ sc->recv_ring+=16*1024;
- */
+ */
- sc->buffer=malloc(ETHER_MAX_LEN-ETHER_CRC_LEN,M_DEVBUF,M_NOWAIT);
- if (sc->buffer == NULL) {
- if_printf(ifp, "Couldn't allocate memory for NIC\n");
- return(0);
- }
+ sc->buffer=malloc(ETHER_MAX_LEN-ETHER_CRC_LEN,M_DEVBUF,M_NOWAIT);
+ if (sc->buffer == NULL) {
+ if_printf(ifp, "Couldn't allocate memory for NIC\n");
+ return(0);
+ }
- /*
- * Initialize the media structures.
- */
- ifmedia_init(&sc->media, 0, cs_mediachange, cs_mediastatus);
+ /*
+ * Initialize the media structures.
+ */
+ ifmedia_init(&sc->media, 0, cs_mediachange, cs_mediastatus);
- if (sc->adapter_cnf & A_CNF_10B_T) {
- ifmedia_add(&sc->media, IFM_ETHER|IFM_10_T, 0, NULL);
- if (sc->chip_type != CS8900) {
- ifmedia_add(&sc->media,
- IFM_ETHER|IFM_10_T|IFM_FDX, 0, NULL);
- ifmedia_add(&sc->media,
- IFM_ETHER|IFM_10_T|IFM_HDX, 0, NULL);
- }
- }
+ if (sc->adapter_cnf & A_CNF_10B_T) {
+ ifmedia_add(&sc->media, IFM_ETHER|IFM_10_T, 0, NULL);
+ if (sc->chip_type != CS8900) {
+ ifmedia_add(&sc->media,
+ IFM_ETHER|IFM_10_T|IFM_FDX, 0, NULL);
+ ifmedia_add(&sc->media,
+ IFM_ETHER|IFM_10_T|IFM_HDX, 0, NULL);
+ }
+ }
- if (sc->adapter_cnf & A_CNF_10B_2)
- ifmedia_add(&sc->media, IFM_ETHER|IFM_10_2, 0, NULL);
+ if (sc->adapter_cnf & A_CNF_10B_2)
+ ifmedia_add(&sc->media, IFM_ETHER|IFM_10_2, 0, NULL);
- if (sc->adapter_cnf & A_CNF_AUI)
- ifmedia_add(&sc->media, IFM_ETHER|IFM_10_5, 0, NULL);
+ if (sc->adapter_cnf & A_CNF_AUI)
+ ifmedia_add(&sc->media, IFM_ETHER|IFM_10_5, 0, NULL);
- if (sc->adapter_cnf & A_CNF_MEDIA)
- ifmedia_add(&sc->media, IFM_ETHER|IFM_AUTO, 0, NULL);
+ if (sc->adapter_cnf & A_CNF_MEDIA)
+ ifmedia_add(&sc->media, IFM_ETHER|IFM_AUTO, 0, NULL);
- /* Set default media from EEPROM */
- switch (sc->adapter_cnf & A_CNF_MEDIA_TYPE) {
- case A_CNF_MEDIA_AUTO: media = IFM_ETHER|IFM_AUTO; break;
- case A_CNF_MEDIA_10B_T: media = IFM_ETHER|IFM_10_T; break;
- case A_CNF_MEDIA_10B_2: media = IFM_ETHER|IFM_10_2; break;
- case A_CNF_MEDIA_AUI: media = IFM_ETHER|IFM_10_5; break;
- default: if_printf(ifp, "adapter has no media\n");
- }
- ifmedia_set(&sc->media, media);
- cs_mediaset(sc, media);
+ /* Set default media from EEPROM */
+ switch (sc->adapter_cnf & A_CNF_MEDIA_TYPE) {
+ case A_CNF_MEDIA_AUTO: media = IFM_ETHER|IFM_AUTO; break;
+ case A_CNF_MEDIA_10B_T: media = IFM_ETHER|IFM_10_T; break;
+ case A_CNF_MEDIA_10B_2: media = IFM_ETHER|IFM_10_2; break;
+ case A_CNF_MEDIA_AUI: media = IFM_ETHER|IFM_10_5; break;
+ default: if_printf(ifp, "adapter has no media\n");
+ }
+ ifmedia_set(&sc->media, media);
+ cs_mediaset(sc, media);
- ether_ifattach(ifp, sc->arpcom.ac_enaddr);
- }
+ ether_ifattach(ifp, sc->arpcom.ac_enaddr);
if (bootverbose)
if_printf(ifp, "ethernet address %6D\n",
==== //depot/projects/netperf/sys/dev/ed/if_ed.c#4 (text+ko) ====
@@ -24,7 +24,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/dev/ed/if_ed.c,v 1.219 2003/10/15 17:22:15 shiba Exp $
+ * $FreeBSD: src/sys/dev/ed/if_ed.c,v 1.220 2003/10/30 19:45:57 brooks Exp $
*/
/*
@@ -1713,51 +1713,49 @@
*/
ed_stop(sc);
- if (!ifp->if_name) {
- /*
- * Initialize ifnet structure
- */
- ifp->if_softc = sc;
- ifp->if_unit = unit;
- ifp->if_name = "ed";
- ifp->if_output = ether_output;
- ifp->if_start = ed_start;
- ifp->if_ioctl = ed_ioctl;
- ifp->if_watchdog = ed_watchdog;
- ifp->if_init = ed_init;
- ifp->if_snd.ifq_maxlen = IFQ_MAXLEN;
- ifp->if_linkmib = &sc->mibdata;
- ifp->if_linkmiblen = sizeof sc->mibdata;
- /*
- * XXX - should do a better job.
- */
- if (sc->chip_type == ED_CHIP_TYPE_WD790)
- sc->mibdata.dot3StatsEtherChipSet =
- DOT3CHIPSET(dot3VendorWesternDigital,
- dot3ChipSetWesternDigital83C790);
- else
- sc->mibdata.dot3StatsEtherChipSet =
- DOT3CHIPSET(dot3VendorNational,
- dot3ChipSetNational8390);
- sc->mibdata.dot3Compliance = DOT3COMPLIANCE_COLLS;
+ /*
+ * Initialize ifnet structure
+ */
+ ifp->if_softc = sc;
+ ifp->if_unit = unit;
+ ifp->if_name = "ed";
+ ifp->if_output = ether_output;
+ ifp->if_start = ed_start;
+ ifp->if_ioctl = ed_ioctl;
+ ifp->if_watchdog = ed_watchdog;
+ ifp->if_init = ed_init;
+ ifp->if_snd.ifq_maxlen = IFQ_MAXLEN;
+ ifp->if_linkmib = &sc->mibdata;
+ ifp->if_linkmiblen = sizeof sc->mibdata;
+ /*
+ * XXX - should do a better job.
+ */
+ if (sc->chip_type == ED_CHIP_TYPE_WD790)
+ sc->mibdata.dot3StatsEtherChipSet =
+ DOT3CHIPSET(dot3VendorWesternDigital,
+ dot3ChipSetWesternDigital83C790);
+ else
+ sc->mibdata.dot3StatsEtherChipSet =
+ DOT3CHIPSET(dot3VendorNational,
+ dot3ChipSetNational8390);
+ sc->mibdata.dot3Compliance = DOT3COMPLIANCE_COLLS;
- /*
- * Set default state for ALTPHYS flag (used to disable the
- * tranceiver for AUI operation), based on compile-time
- * config option.
- */
- if (flags & ED_FLAGS_DISABLE_TRANCEIVER)
- ifp->if_flags = (IFF_BROADCAST | IFF_SIMPLEX |
- IFF_MULTICAST | IFF_ALTPHYS);
- else
- ifp->if_flags = (IFF_BROADCAST | IFF_SIMPLEX |
- IFF_MULTICAST);
+ /*
+ * Set default state for ALTPHYS flag (used to disable the
+ * tranceiver for AUI operation), based on compile-time
+ * config option.
+ */
+ if (flags & ED_FLAGS_DISABLE_TRANCEIVER)
+ ifp->if_flags = (IFF_BROADCAST | IFF_SIMPLEX |
+ IFF_MULTICAST | IFF_ALTPHYS);
+ else
+ ifp->if_flags = (IFF_BROADCAST | IFF_SIMPLEX |
+ IFF_MULTICAST);
- /*
- * Attach the interface
- */
- ether_ifattach(ifp, sc->arpcom.ac_enaddr);
- }
+ /*
+ * Attach the interface
+ */
+ ether_ifattach(ifp, sc->arpcom.ac_enaddr);
/* device attach does transition from UNCONFIGURED to IDLE state */
/*
==== //depot/projects/netperf/sys/dev/sbni/if_sbni.c#3 (text+ko) ====
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/sbni/if_sbni.c,v 1.12 2003/08/24 18:03:43 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/sbni/if_sbni.c,v 1.13 2003/10/30 19:45:57 brooks Exp $");
/*
* Device driver for Granch SBNI12 leased line adapters
@@ -226,26 +226,24 @@
set_initial_values(sc, flags);
callout_handle_init(&sc->wch);
- if (!ifp->if_name) {
- /* Initialize ifnet structure */
- ifp->if_softc = sc;
- ifp->if_unit = unit;
- ifp->if_name = "sbni";
- ifp->if_init = sbni_init;
- ifp->if_start = sbni_start;
- ifp->if_output = ether_output;
- ifp->if_ioctl = sbni_ioctl;
- ifp->if_watchdog = sbni_watchdog;
- ifp->if_snd.ifq_maxlen = IFQ_MAXLEN;
+ /* Initialize ifnet structure */
+ ifp->if_softc = sc;
+ ifp->if_unit = unit;
+ ifp->if_name = "sbni";
+ ifp->if_init = sbni_init;
+ ifp->if_start = sbni_start;
+ ifp->if_output = ether_output;
+ ifp->if_ioctl = sbni_ioctl;
+ ifp->if_watchdog = sbni_watchdog;
+ ifp->if_snd.ifq_maxlen = IFQ_MAXLEN;
- /* report real baud rate */
- csr0 = sbni_inb(sc, CSR0);
- ifp->if_baudrate =
- (csr0 & 0x01 ? 500000 : 2000000) / (1 << flags.rate);
+ /* report real baud rate */
+ csr0 = sbni_inb(sc, CSR0);
+ ifp->if_baudrate =
+ (csr0 & 0x01 ? 500000 : 2000000) / (1 << flags.rate);
- ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
- ether_ifattach(ifp, sc->arpcom.ac_enaddr);
- }
+ ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
+ ether_ifattach(ifp, sc->arpcom.ac_enaddr);
/* device attach does transition from UNCONFIGURED to IDLE state */
if_printf(ifp, "speed %ld, address %6D, rxl ",
==== //depot/projects/netperf/sys/dev/xe/if_xe.c#4 (text+ko) ====
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/xe/if_xe.c,v 1.39 2003/10/14 22:51:35 rsm Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/xe/if_xe.c,v 1.40 2003/10/30 19:45:57 brooks Exp $");
/*
* Portions of this software were derived from Werner Koch's xirc2ps driver
@@ -218,22 +218,20 @@
scp->autoneg_status = XE_AUTONEG_NONE;
/* Initialise the ifnet structure */
- if (!scp->ifp->if_name) {
- scp->ifp->if_softc = scp;
- scp->ifp->if_name = "xe";
- scp->ifp->if_unit = device_get_unit(dev);
- scp->ifp->if_timer = 0;
- scp->ifp->if_flags = (IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST);
- scp->ifp->if_linkmib = &scp->mibdata;
- scp->ifp->if_linkmiblen = sizeof scp->mibdata;
- scp->ifp->if_output = ether_output;
- scp->ifp->if_start = xe_start;
- scp->ifp->if_ioctl = xe_ioctl;
- scp->ifp->if_watchdog = xe_watchdog;
- scp->ifp->if_init = xe_init;
- scp->ifp->if_baudrate = 100000000;
- scp->ifp->if_snd.ifq_maxlen = IFQ_MAXLEN;
- }
+ scp->ifp->if_softc = scp;
+ scp->ifp->if_name = "xe";
+ scp->ifp->if_unit = device_get_unit(dev);
+ scp->ifp->if_timer = 0;
+ scp->ifp->if_flags = (IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST);
+ scp->ifp->if_linkmib = &scp->mibdata;
+ scp->ifp->if_linkmiblen = sizeof scp->mibdata;
+ scp->ifp->if_output = ether_output;
+ scp->ifp->if_start = xe_start;
+ scp->ifp->if_ioctl = xe_ioctl;
+ scp->ifp->if_watchdog = xe_watchdog;
+ scp->ifp->if_init = xe_init;
+ scp->ifp->if_baudrate = 100000000;
+ scp->ifp->if_snd.ifq_maxlen = IFQ_MAXLEN;
/* Initialise the ifmedia structure */
ifmedia_init(scp->ifm, 0, xe_media_change, xe_media_status);
==== //depot/projects/netperf/sys/i386/isa/if_rdp.c#3 (text+ko) ====
@@ -26,7 +26,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/i386/isa/if_rdp.c,v 1.21 2003/08/05 20:11:50 bde Exp $");
+__FBSDID("$FreeBSD: src/sys/i386/isa/if_rdp.c,v 1.22 2003/10/30 19:45:58 brooks Exp $");
/*
* Device driver for RealTek RTL 8002 (`REDP') based pocket-ethernet
@@ -591,25 +591,23 @@
*/
rdp_stop(sc);
- if (!ifp->if_name) {
- /*
- * Initialize ifnet structure
- */
- ifp->if_softc = sc;
- ifp->if_unit = unit;
- ifp->if_name = "rdp";
- ifp->if_start = rdp_start;
- ifp->if_ioctl = rdp_ioctl;
- ifp->if_watchdog = rdp_watchdog;
- ifp->if_init = rdp_init;
- ifp->if_snd.ifq_maxlen = IFQ_MAXLEN;
- ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX;
+ /*
+ * Initialize ifnet structure
+ */
+ ifp->if_softc = sc;
+ ifp->if_unit = unit;
+ ifp->if_name = "rdp";
+ ifp->if_start = rdp_start;
+ ifp->if_ioctl = rdp_ioctl;
+ ifp->if_watchdog = rdp_watchdog;
+ ifp->if_init = rdp_init;
+ ifp->if_snd.ifq_maxlen = IFQ_MAXLEN;
+ ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX;
- /*
- * Attach the interface
- */
- ether_ifattach(ifp, sc->arpcom.ac_enaddr);
- }
+ /*
+ * Attach the interface
+ */
+ ether_ifattach(ifp, sc->arpcom.ac_enaddr);
/*
* Print additional info when attached
==== //depot/projects/netperf/sys/netinet6/in6_src.c#16 (text+ko) ====
@@ -1,4 +1,4 @@
-/* $FreeBSD: src/sys/netinet6/in6_src.c,v 1.18 2003/10/30 15:29:17 ume Exp $ */
+/* $FreeBSD: src/sys/netinet6/in6_src.c,v 1.19 2003/10/30 18:42:25 ume Exp $ */
/* $KAME: in6_src.c,v 1.37 2001/03/29 05:34:31 itojun Exp $ */
/*
@@ -647,6 +647,8 @@
{
struct addrsel_policyent *new, *pol;
+ MALLOC(new, struct addrsel_policyent *, sizeof(*new), M_IFADDR,
+ M_WAITOK);
ADDRSEL_LOCK();
/* duplication check */
@@ -656,12 +658,12 @@
&pol->ape_policy.addr) &&
SA6_ARE_ADDR_EQUAL(&newpolicy->addrmask,
&pol->ape_policy.addrmask)) {
+ ADDRSEL_UNLOCK();
+ FREE(new, M_IFADDR);
return (EEXIST); /* or override it? */
}
}
- MALLOC(new, struct addrsel_policyent *, sizeof(*new), M_IFADDR,
- M_WAITOK);
bzero(new, sizeof(*new));
/* XXX: should validate entry */
@@ -690,8 +692,10 @@
break;
}
}
- if (pol == NULL)
+ if (pol == NULL) {
+ ADDRSEL_UNLOCK();
return (ESRCH);
+ }
TAILQ_REMOVE(&addrsel_policytab, pol, ape_entry);
ADDRSEL_UNLOCK();
@@ -710,8 +714,10 @@
ADDRSEL_LOCK();
for (pol = TAILQ_FIRST(&addrsel_policytab); pol;
pol = TAILQ_NEXT(pol, ape_entry)) {
- if ((error = (*callback)(&pol->ape_policy, w)) != 0)
+ if ((error = (*callback)(&pol->ape_policy, w)) != 0) {
+ ADDRSEL_UNLOCK();
return (error);
+ }
}
ADDRSEL_UNLOCK();
More information about the p4-projects
mailing list