summaryrefslogtreecommitdiffstats
path: root/sys/compat
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2006-07-19 18:28:52 +0000
committerjhb <jhb@FreeBSD.org>2006-07-19 18:28:52 +0000
commit947b8c9fbd64c828ef441411fff4f0ce542a99e2 (patch)
treef118230bba024980cf53524a675fa4cf555e0f6a /sys/compat
parentde5f3a26d7a77dc461ed2c15145b9b2ba0386750 (diff)
downloadFreeBSD-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/compat')
-rw-r--r--sys/compat/linux/linux_socket.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/compat/linux/linux_socket.c b/sys/compat/linux/linux_socket.c
index 8b164fa..3f089c0 100644
--- a/sys/compat/linux/linux_socket.c
+++ b/sys/compat/linux/linux_socket.c
@@ -609,7 +609,9 @@ linux_bind(struct thread *td, struct linux_bind_args *args)
if (error)
return (error);
- return (kern_bind(td, linux_args.s, sa));
+ error = kern_bind(td, linux_args.s, sa);
+ free(sa, M_SONAME);
+ return (error);
}
struct linux_connect_args {
@@ -638,6 +640,7 @@ linux_connect(struct thread *td, struct linux_connect_args *args)
return (error);
error = kern_connect(td, linux_args.s, sa);
+ free(sa, M_SONAME);
if (error != EISCONN)
return (error);
OpenPOWER on IntegriCloud