Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 4 Oct 2014 21:39:04 +0000 (UTC)
From:      Juergen Lock <nox@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r369997 - in head/emulators/qemu-devel: . files
Message-ID:  <201410042139.s94Ld4hr089463@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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@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) {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201410042139.s94Ld4hr089463>