From patchwork Sun Mar 11 13:52:59 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Tokarev X-Patchwork-Id: 145980 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id BE3FAB6FA9 for ; Mon, 12 Mar 2012 00:58:04 +1100 (EST) Received: from localhost ([::1]:51977 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S6jHd-0008Rm-63 for incoming@patchwork.ozlabs.org; Sun, 11 Mar 2012 09:58:01 -0400 Received: from eggs.gnu.org ([208.118.235.92]:58515) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S6jHV-0008OQ-Pw for qemu-devel@nongnu.org; Sun, 11 Mar 2012 09:57:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1S6jHS-0000oX-1i for qemu-devel@nongnu.org; Sun, 11 Mar 2012 09:57:53 -0400 Received: from isrv.corpit.ru ([86.62.121.231]:60069) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S6jHR-0000o3-Qf for qemu-devel@nongnu.org; Sun, 11 Mar 2012 09:57:49 -0400 Received: from gandalf.tls.msk.ru (mjt.vpn.tls.msk.ru [192.168.177.99]) by isrv.corpit.ru (Postfix) with ESMTP id E7003A07DA; Sun, 11 Mar 2012 17:57:46 +0400 (MSK) Received: by gandalf.tls.msk.ru (Postfix, from userid 1000) id 7866A65E0; Sun, 11 Mar 2012 17:57:45 +0400 (MSK) From: Michael Tokarev Date: Sun, 11 Mar 2012 17:52:59 +0400 To: qemu-devel@nongnu.org Message-Id: <20120311135745.7866A65E0@gandalf.tls.msk.ru> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 86.62.121.231 Cc: Amit Shah Subject: [Qemu-devel] [PATCH] virtio-serial-bus: use correct lengths in control_out() message X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org In case of more than one control message, the code will use size of the largest message so far for all subsequent messages, instead of using size of current one. Fix it. Signed-off-by: Michael Tokarev --- hw/virtio-serial-bus.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) diff --git a/hw/virtio-serial-bus.c b/hw/virtio-serial-bus.c index e22940e..abe48ec 100644 --- a/hw/virtio-serial-bus.c +++ b/hw/virtio-serial-bus.c @@ -451,28 +451,28 @@ static void control_out(VirtIODevice *vdev, VirtQueue *vq) vser = DO_UPCAST(VirtIOSerial, vdev, vdev); len = 0; buf = NULL; while (virtqueue_pop(vq, &elem)) { - size_t cur_len, copied; + size_t cur_len; cur_len = iov_size(elem.out_sg, elem.out_num); /* * Allocate a new buf only if we didn't have one previously or * if the size of the buf differs */ if (cur_len > len) { g_free(buf); buf = g_malloc(cur_len); len = cur_len; } - copied = iov_to_buf(elem.out_sg, elem.out_num, buf, 0, len); + iov_to_buf(elem.out_sg, elem.out_num, buf, 0, cur_len); - handle_control_message(vser, buf, copied); + handle_control_message(vser, buf, cur_len); virtqueue_push(vq, &elem, 0); } g_free(buf); virtio_notify(vdev, vq); }