summaryrefslogtreecommitdiffstats
path: root/sys/netinet6
diff options
context:
space:
mode:
authorbz <bz@FreeBSD.org>2006-05-20 13:26:08 +0000
committerbz <bz@FreeBSD.org>2006-05-20 13:26:08 +0000
commit25768fb0822d0ea6d0c19e88be6e0af6977d848a (patch)
tree8b03fc4bb07fcdb70bb7edca04e62b2c7d44a00c /sys/netinet6
parenteb6278122adb36461e9445fdc0bd342b5abc7ca2 (diff)
downloadFreeBSD-src-25768fb0822d0ea6d0c19e88be6e0af6977d848a.zip
FreeBSD-src-25768fb0822d0ea6d0c19e88be6e0af6977d848a.tar.gz
In IN6_IS_ADDR_V4MAPPED case instead of returning directly set error and
goto out so that locks will be dropped. Reviewed by: rwatson, gnn
Diffstat (limited to 'sys/netinet6')
-rw-r--r--sys/netinet6/udp6_usrreq.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/netinet6/udp6_usrreq.c b/sys/netinet6/udp6_usrreq.c
index 7f398f7..18f0c81 100644
--- a/sys/netinet6/udp6_usrreq.c
+++ b/sys/netinet6/udp6_usrreq.c
@@ -584,8 +584,10 @@ udp6_connect(struct socket *so, struct sockaddr *nam, struct thread *td)
if (IN6_IS_ADDR_V4MAPPED(&sin6_p->sin6_addr)) {
struct sockaddr_in sin;
- if (inp->inp_faddr.s_addr != INADDR_ANY)
- return EISCONN;
+ if (inp->inp_faddr.s_addr != INADDR_ANY) {
+ error = EISCONN;
+ goto out;
+ }
in6_sin6_2_sin(&sin, sin6_p);
error = in_pcbconnect(inp, (struct sockaddr *)&sin,
td->td_ucred);
OpenPOWER on IntegriCloud