From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:60271) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SoYsh-0002ik-Oz for qemu-devel@nongnu.org; Tue, 10 Jul 2012 07:45:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SoYsc-00022Q-Ez for qemu-devel@nongnu.org; Tue, 10 Jul 2012 07:45:27 -0400 Received: from db3ehsobe001.messaging.microsoft.com ([213.199.154.139]:16539 helo=db3outboundpool.messaging.microsoft.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SoYsc-00020R-6K for qemu-devel@nongnu.org; Tue, 10 Jul 2012 07:45:22 -0400 From: Wei Wang Date: Tue, 10 Jul 2012 13:43:26 +0200 Message-ID: <1341920606-11942-1-git-send-email-wei.wang2@amd.com> MIME-Version: 1.0 Content-Type: text/plain Subject: [Qemu-devel] [PATCH] Fix xen pci passthrough List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: stefano.stabellini@eu.citrix.com, anthony.perard@citrix.com Cc: Wei Wang , xen-devel@lists.xensource.com, qemu-devel@nongnu.org Hi, I find a passthrough issue in qemu when pci device has multiple mmio regions. In this case, the last few bytes of qmp response string are trimmed and then passthru fails with following output. *** glibc detected *** xl: realloc(): invalid pointer: 0x0000000002163f90 *** ======= Backtrace: ========= /lib64/libc.so.6(+0x74c06)[0x7f62970e4c06] /lib64/libc.so.6(+0x77d25)[0x7f62970e7d25] /lib/libxenlight.so.2.0(+0x28d02)[0x7f6297a78d02] /lib/libxenlight.so.2.0(+0x2eccf)[0x7f6297a7eccf] /lib/libxenlight.so.2.0(+0x2f2f6)[0x7f6297a7f2f6] /lib/libxenlight.so.2.0(+0x2fe18)[0x7f6297a7fe18] /lib/libxenlight.so.2.0(+0x20027)[0x7f6297a70027] /lib/libxenlight.so.2.0(+0x212a6)[0x7f6297a712a6] /lib/libxenlight.so.2.0(+0x19e82)[0x7f6297a69e82] /lib/libxenlight.so.2.0(+0x1c288)[0x7f6297a6c288] /lib/libxenlight.so.2.0(+0x1c2a8)[0x7f6297a6c2a8] /lib/libxenlight.so.2.0(+0x2657e)[0x7f6297a7657e] /lib/libxenlight.so.2.0(+0x34076)[0x7f6297a84076] /lib/libxenlight.so.2.0(libxl__fork_selfpipe_woken+0x92)[0x7f6297a84394] /lib/libxenlight.so.2.0(+0x3254a)[0x7f6297a8254a] /lib/libxenlight.so.2.0(+0x3276d)[0x7f6297a8276d] /lib/libxenlight.so.2.0(+0x33944)[0x7f6297a83944] /lib/libxenlight.so.2.0(+0x1c0a8)[0x7f6297a6c0a8] /lib/libxenlight.so.2.0(libxl_domain_create_new+0x14)[0x7f6297a6c14f] xl[0x40c1f2] xl[0x40fc94] xl[0x406c21] /lib64/libc.so.6(__libc_start_main+0xed)[0x7f629709123d] xl[0x406439] Attached patch can fix this issue. Thanks, Wei Signed-off-by: Wei Wang --- monitor.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/monitor.c b/monitor.c index f6107ba..9f30f5f 100644 --- a/monitor.c +++ b/monitor.c @@ -165,7 +165,7 @@ struct Monitor { int reset_seen; int flags; int suspend_cnt; - uint8_t outbuf[1024]; + uint8_t outbuf[2048]; int outbuf_index; ReadLineState *rs; MonitorControl *mc; -- 1.7.4