Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F156699159
D25804.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
D25804.diff
View Options
Index: head/sys/compat/linux/linux_socket.c
===================================================================
--- head/sys/compat/linux/linux_socket.c
+++ head/sys/compat/linux/linux_socket.c
@@ -394,6 +394,22 @@
}
static int
+linux_copyout_sockaddr(const struct sockaddr *sa, void *uaddr, size_t len)
+{
+ struct l_sockaddr *lsa;
+ int error;
+
+ error = bsd_to_linux_sockaddr(sa, &lsa, len);
+ if (error != 0)
+ return (error);
+
+ error = copyout(lsa, uaddr, len);
+ free(lsa, M_SONAME);
+
+ return (error);
+}
+
+static int
linux_sendit(struct thread *td, int s, struct msghdr *mp, int flags,
struct mbuf *control, enum uio_seg segflg)
{
@@ -609,7 +625,6 @@
linux_accept_common(struct thread *td, int s, l_uintptr_t addr,
l_uintptr_t namelen, int flags)
{
- struct l_sockaddr *lsa;
struct sockaddr *sa;
struct file *fp, *fp1;
int bflags, len;
@@ -665,10 +680,7 @@
}
if (len != 0) {
- error = bsd_to_linux_sockaddr(sa, &lsa, len);
- if (error == 0)
- error = copyout(lsa, PTRIN(addr), len);
- free(lsa, M_SONAME);
+ error = linux_copyout_sockaddr(sa, PTRIN(addr), len);
/*
* XXX: We should also copyout the len, shouldn't we?
@@ -704,7 +716,6 @@
int
linux_getsockname(struct thread *td, struct linux_getsockname_args *args)
{
- struct l_sockaddr *lsa;
struct sockaddr *sa;
int len, error;
@@ -716,13 +727,8 @@
if (error != 0)
return (error);
- if (len != 0) {
- error = bsd_to_linux_sockaddr(sa, &lsa, len);
- if (error == 0)
- error = copyout(lsa, PTRIN(args->addr),
- len);
- free(lsa, M_SONAME);
- }
+ if (len != 0)
+ error = linux_copyout_sockaddr(sa, PTRIN(args->addr), len);
free(sa, M_SONAME);
if (error == 0)
@@ -733,7 +739,6 @@
int
linux_getpeername(struct thread *td, struct linux_getpeername_args *args)
{
- struct l_sockaddr *lsa;
struct sockaddr *sa;
int len, error;
@@ -747,13 +752,8 @@
if (error != 0)
return (error);
- if (len != 0) {
- error = bsd_to_linux_sockaddr(sa, &lsa, len);
- if (error == 0)
- error = copyout(lsa, PTRIN(args->addr),
- len);
- free(lsa, M_SONAME);
- }
+ if (len != 0)
+ error = linux_copyout_sockaddr(sa, PTRIN(args->addr), len);
free(sa, M_SONAME);
if (error == 0)
@@ -895,7 +895,6 @@
int
linux_recvfrom(struct thread *td, struct linux_recvfrom_args *args)
{
- struct l_sockaddr *lsa;
struct sockaddr *sa;
struct msghdr msg;
struct iovec aiov;
@@ -927,13 +926,8 @@
if (error != 0)
goto out;
- if (PTRIN(args->from) != NULL) {
- error = bsd_to_linux_sockaddr(sa, &lsa, msg.msg_namelen);
- if (error == 0)
- error = copyout(lsa, PTRIN(args->from),
- msg.msg_namelen);
- free(lsa, M_SONAME);
- }
+ if (PTRIN(args->from) != NULL)
+ error = linux_copyout_sockaddr(sa, PTRIN(args->from), msg.msg_namelen);
if (error == 0 && PTRIN(args->fromlen) != NULL)
error = copyout(&msg.msg_namelen, PTRIN(args->fromlen),
@@ -1170,7 +1164,6 @@
struct mbuf *control = NULL;
struct mbuf **controlp;
struct timeval *ftmvl;
- struct l_sockaddr *lsa;
struct sockaddr *sa;
l_timeval ltmvl;
caddr_t outbuf;
@@ -1216,11 +1209,8 @@
*/
if (msg->msg_name != NULL && msg->msg_namelen > 0) {
msg->msg_name = PTRIN(linux_msghdr.msg_name);
- error = bsd_to_linux_sockaddr(sa, &lsa, msg->msg_namelen);
- if (error == 0)
- error = copyout(lsa, PTRIN(msg->msg_name),
- msg->msg_namelen);
- free(lsa, M_SONAME);
+ error = linux_copyout_sockaddr(sa,
+ PTRIN(msg->msg_name), msg->msg_namelen);
if (error != 0)
goto bad;
}
@@ -1505,7 +1495,6 @@
l_timeval linux_tv;
struct timeval tv;
socklen_t tv_len, xulen, len;
- struct l_sockaddr *lsa;
struct sockaddr *sa;
struct xucred xu;
struct l_ucred lxu;
@@ -1591,10 +1580,7 @@
if (error != 0)
goto out;
- error = bsd_to_linux_sockaddr(sa, &lsa, len);
- if (error == 0)
- error = copyout(lsa, PTRIN(args->optval), len);
- free(lsa, M_SONAME);
+ error = linux_copyout_sockaddr(sa, PTRIN(args->optval), len);
if (error == 0)
error = copyout(&len, PTRIN(args->optlen),
sizeof(len));
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, May 16, 6:36 PM (22 h, 17 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
33144970
Default Alt Text
D25804.diff (3 KB)
Attached To
Mode
D25804: Reduce code duplication by introducing linux_copyout_sockaddr()
Attached
Detach File
Event Timeline
Log In to Comment