diff options
author | jhb <jhb@FreeBSD.org> | 2006-07-19 18:28:52 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2006-07-19 18:28:52 +0000 |
commit | 947b8c9fbd64c828ef441411fff4f0ce542a99e2 (patch) | |
tree | f118230bba024980cf53524a675fa4cf555e0f6a /sys/kern | |
parent | de5f3a26d7a77dc461ed2c15145b9b2ba0386750 (diff) | |
download | FreeBSD-src-947b8c9fbd64c828ef441411fff4f0ce542a99e2.zip FreeBSD-src-947b8c9fbd64c828ef441411fff4f0ce542a99e2.tar.gz |
Don't free the sockaddr in kern_bind() and kern_connect() as not all
callers pass a sockaddr allocated via malloc() from M_SONAME anymore.
Instead, free it in the callers when necessary.
Diffstat (limited to 'sys/kern')
-rw-r--r-- | sys/kern/uipc_syscalls.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/sys/kern/uipc_syscalls.c b/sys/kern/uipc_syscalls.c index 76a66a4..a9eaa0d 100644 --- a/sys/kern/uipc_syscalls.c +++ b/sys/kern/uipc_syscalls.c @@ -209,7 +209,9 @@ bind(td, uap) if ((error = getsockaddr(&sa, uap->name, uap->namelen)) != 0) return (error); - return (kern_bind(td, uap->s, sa)); + error = kern_bind(td, uap->s, sa); + free(sa, M_SONAME); + return (error); } int @@ -241,7 +243,6 @@ done1: fdrop(fp, td); done2: NET_UNLOCK_GIANT(); - FREE(sa, M_SONAME); return (error); } @@ -534,7 +535,9 @@ connect(td, uap) if (error) return (error); - return (kern_connect(td, uap->s, sa)); + error = kern_connect(td, uap->s, sa); + free(sa, M_SONAME); + return (error); } @@ -596,7 +599,6 @@ done1: fdrop(fp, td); done2: NET_UNLOCK_GIANT(); - FREE(sa, M_SONAME); return (error); } |