svn commit: r369997 - in head/emulators/qemu-devel: . files
Juergen Lock
nox at FreeBSD.org
Sat Oct 4 21:39:05 UTC 2014
Author: nox
Date: Sat Oct 4 21:39:04 2014
New Revision: 369997
URL: https://svnweb.freebsd.org/changeset/ports/369997
QAT: https://qat.redports.org/buildarchive/r369997/
Log:
- bsd-user: fix sendmsg(2) emulation w/o ancillary data.
- Bump PORTREVISION.
Submitted by: sbruno
Obtained from: https://github.com/seanbruno/qemu-bsd-user/commit/ad92220df37d1ab3120316fcc436071c78817561
Added:
head/emulators/qemu-devel/files/extra-patch-ad92220df37d1ab3120316fcc436071c78817561 (contents, props changed)
Modified:
head/emulators/qemu-devel/Makefile
Modified: head/emulators/qemu-devel/Makefile
==============================================================================
--- head/emulators/qemu-devel/Makefile Sat Oct 4 21:38:08 2014 (r369996)
+++ head/emulators/qemu-devel/Makefile Sat Oct 4 21:39:04 2014 (r369997)
@@ -3,7 +3,7 @@
PORTNAME= qemu
PORTVERSION= 2.0.2
-PORTREVISION= 3
+PORTREVISION= 4
CATEGORIES= emulators
MASTER_SITES= http://wiki.qemu.org/download/:release \
LOCAL/nox:snapshot
@@ -79,6 +79,7 @@ EXTRA_PATCHES+= ${FILESDIR}/extra-patch-
EXTRA_PATCHES+= ${FILESDIR}/extra-patch-bsd-user-freebsd-os-sys.c
EXTRA_PATCHES+= ${FILESDIR}/extra-patch-sysctl-hw-physmem
EXTRA_PATCHES+= ${FILESDIR}/extra-patch-max-arg-pages
+EXTRA_PATCHES+= ${FILESDIR}/extra-patch-ad92220df37d1ab3120316fcc436071c78817561
.endif
CONFIGURE_ARGS+= --extra-ldflags=-L${LOCALBASE}/lib
Added: head/emulators/qemu-devel/files/extra-patch-ad92220df37d1ab3120316fcc436071c78817561
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/emulators/qemu-devel/files/extra-patch-ad92220df37d1ab3120316fcc436071c78817561 Sat Oct 4 21:39:04 2014 (r369997)
@@ -0,0 +1,59 @@
+From ad92220df37d1ab3120316fcc436071c78817561 Mon Sep 17 00:00:00 2001
+From: Sean Bruno <sbruno at chips.ysv.freebsd.org>
+Date: Sat, 4 Oct 2014 20:36:32 +0000
+Subject: [PATCH] Ancillary data in the msghdr struct is optional, not
+ mandatory.
+
+If it doesn't exist, that's ok sendmsg() anyway. Fixes pkg repo
+issues now that pkg uses sendmsg.
+---
+ bsd-user/freebsd/os-socket.h | 22 +++++++++++++++++-----
+ 1 file changed, 17 insertions(+), 5 deletions(-)
+
+diff --git a/bsd-user/freebsd/os-socket.h b/bsd-user/freebsd/os-socket.h
+index 9339ffb..a5f5ca7 100644
+--- a/bsd-user/freebsd/os-socket.h
++++ b/bsd-user/freebsd/os-socket.h
+@@ -54,9 +54,15 @@ static inline abi_long do_freebsd_sendmsg(int fd, abi_ulong target_msg,
+ msg.msg_name = NULL;
+ msg.msg_namelen = 0;
+ }
+- msg.msg_controllen = 2 * tswapal(msgp->msg_controllen);
+- msg.msg_control = alloca(msg.msg_controllen);
+- msg.msg_flags = tswap32(msgp->msg_flags);
++ if (tswapal(msgp->msg_controllen) > 0) {
++ msg.msg_controllen = 2 * tswapal(msgp->msg_controllen);
++ msg.msg_control = alloca(msg.msg_controllen);
++ msg.msg_flags = tswap32(msgp->msg_flags);
++ } else {
++ msg.msg_controllen = 0;
++ msg.msg_control = NULL;
++ msg.msg_flags = 0;
++ }
+
+ count = tswapal(msgp->msg_iovlen);
+ vec = alloca(count * sizeof(struct iovec));
+@@ -65,7 +71,10 @@ static inline abi_long do_freebsd_sendmsg(int fd, abi_ulong target_msg,
+ msg.msg_iovlen = count;
+ msg.msg_iov = vec;
+
+- ret = t2h_freebsd_cmsg(&msg, msgp);
++ if (msg.msg_controllen > 0)
++ ret = t2h_freebsd_cmsg(&msg, msgp);
++ else /* no ancillary data */
++ ret = 0;
+ if (!is_error(ret)) {
+ ret = get_errno(sendmsg(fd, &msg, flags));
+ }
+@@ -116,7 +125,10 @@ static inline abi_long do_freebsd_recvmsg(int fd, abi_ulong target_msg,
+ ret = get_errno(recvmsg(fd, &msg, flags));
+ if (!is_error(ret)) {
+ len = ret;
+- ret = h2t_freebsd_cmsg(msgp, &msg);
++ if (msg.msg_controllen > 0)
++ ret = h2t_freebsd_cmsg(msgp, &msg);
++ else /* no ancillary data */
++ ret = 0;
+ if (!is_error(ret)) {
+ msgp->msg_namelen = tswap32(msg.msg_namelen);
+ if (msg.msg_name != NULL) {
More information about the svn-ports-head
mailing list