summaryrefslogtreecommitdiffstats
path: root/sys/netinet
diff options
context:
space:
mode:
authoreri <eri@FreeBSD.org>2008-07-14 20:11:51 +0000
committereri <eri@FreeBSD.org>2008-07-14 20:11:51 +0000
commit253913181a592c136cd5e4316e6b0d8da1930ec4 (patch)
tree9add4661f30780e05887b1a022dd634b7a3e60a1 /sys/netinet
parent35ea5261312ea16657cb1840a3d81fff4b9fd46a (diff)
downloadFreeBSD-src-253913181a592c136cd5e4316e6b0d8da1930ec4.zip
FreeBSD-src-253913181a592c136cd5e4316e6b0d8da1930ec4.tar.gz
Fix carp(4) panics that can occur during carp interface configuration.
Approved by: mlaier (mentor) Reported by: Scott Ullrich MFC after: 1 week
Diffstat (limited to 'sys/netinet')
-rw-r--r--sys/netinet/ip_carp.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/sys/netinet/ip_carp.c b/sys/netinet/ip_carp.c
index ecfe531..69fea3f 100644
--- a/sys/netinet/ip_carp.c
+++ b/sys/netinet/ip_carp.c
@@ -1464,7 +1464,11 @@ carp_set_addr(struct carp_softc *sc, struct sockaddr_in *sin)
carp_set_state(sc, INIT);
if (sc->sc_naddrs)
SC2IFP(sc)->if_flags |= IFF_UP;
+ if (sc->sc_carpdev)
+ CARP_SCLOCK(sc);
carp_setrun(sc, 0);
+ if (sc->sc_carpdev)
+ CARP_SCUNLOCK(sc);
return (0);
}
@@ -1625,7 +1629,11 @@ carp_set_addr6(struct carp_softc *sc, struct sockaddr_in6 *sin6)
carp_set_state(sc, INIT);
if (sc->sc_naddrs6)
SC2IFP(sc)->if_flags |= IFF_UP;
+ if (sc->sc_carpdev)
+ CARP_SCLOCK(sc);
carp_setrun(sc, 0);
+ if (sc->sc_carpdev)
+ CARP_SCUNLOCK(sc);
return (0);
}
OpenPOWER on IntegriCloud