summaryrefslogtreecommitdiffstats
path: root/sys/netinet
diff options
context:
space:
mode:
authorbz <bz@FreeBSD.org>2010-09-04 16:06:01 +0000
committerbz <bz@FreeBSD.org>2010-09-04 16:06:01 +0000
commitef87b56ba430fb708d0ff06166a0687ab73bb9b4 (patch)
tree656830d5b0bf9db279df96b9f4e03b7398f62467 /sys/netinet
parentddc5322166bee8f5c2b317bef177aa7f6d6e3d26 (diff)
downloadFreeBSD-src-ef87b56ba430fb708d0ff06166a0687ab73bb9b4.zip
FreeBSD-src-ef87b56ba430fb708d0ff06166a0687ab73bb9b4.tar.gz
In case of RADIX_MPATH do not leak the IN_IFADDR read lock on
early return. MFC after: 3 days
Diffstat (limited to 'sys/netinet')
-rw-r--r--sys/netinet/in.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/netinet/in.c b/sys/netinet/in.c
index b5873d8..aded2c6 100644
--- a/sys/netinet/in.c
+++ b/sys/netinet/in.c
@@ -1039,9 +1039,10 @@ in_addprefix(struct in_ifaddr *target, int flags)
if (ia->ia_flags & IFA_ROUTE) {
#ifdef RADIX_MPATH
if (ia->ia_addr.sin_addr.s_addr ==
- target->ia_addr.sin_addr.s_addr)
+ target->ia_addr.sin_addr.s_addr) {
+ IN_IFADDR_RUNLOCK();
return (EEXIST);
- else
+ } else
break;
#endif
if (V_sameprefixcarponly &&
OpenPOWER on IntegriCloud