diff options
author | dchagin <dchagin@FreeBSD.org> | 2009-05-02 10:51:40 +0000 |
---|---|---|
committer | dchagin <dchagin@FreeBSD.org> | 2009-05-02 10:51:40 +0000 |
commit | f04150bca8c18c38f8cdd8cc5e33b058eab61b37 (patch) | |
tree | d6e3416b8cb5a3a0644d0c6133ed084ae61afc23 /sys/compat/linux/linux_socket.c | |
parent | 32b5830d97ce2de8a035a1090f087f2551568e07 (diff) | |
download | FreeBSD-src-f04150bca8c18c38f8cdd8cc5e33b058eab61b37.zip FreeBSD-src-f04150bca8c18c38f8cdd8cc5e33b058eab61b37.tar.gz |
Linux socketpair() call expects explicit specified protocol for
AF_LOCAL domain unlike FreeBSD which expects 0 in this case.
Approved by: kib (mentor)
MFC after: 1 month
Diffstat (limited to 'sys/compat/linux/linux_socket.c')
-rw-r--r-- | sys/compat/linux/linux_socket.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/compat/linux/linux_socket.c b/sys/compat/linux/linux_socket.c index 56cc92e..c92fd12 100644 --- a/sys/compat/linux/linux_socket.c +++ b/sys/compat/linux/linux_socket.c @@ -859,7 +859,10 @@ linux_socketpair(struct thread *td, struct linux_socketpair_args *args) return (EINVAL); bsd_args.type = args->type; - bsd_args.protocol = args->protocol; + if (bsd_args.domain == AF_LOCAL && args->protocol == PF_UNIX) + bsd_args.protocol = 0; + else + bsd_args.protocol = args->protocol; bsd_args.rsv = (int *)PTRIN(args->rsv); return (socketpair(td, &bsd_args)); } |