From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37383) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YiL4M-0008JB-Jo for qemu-devel@nongnu.org; Wed, 15 Apr 2015 07:01:28 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YiL4J-000377-8f for qemu-devel@nongnu.org; Wed, 15 Apr 2015 07:01:22 -0400 Received: from [59.151.112.132] (port=50126 helo=heian.cn.fujitsu.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YiL4I-00036a-T3 for qemu-devel@nongnu.org; Wed, 15 Apr 2015 07:01:19 -0400 Message-ID: <552E38B5.7000401@cn.fujitsu.com> Date: Wed, 15 Apr 2015 18:08:53 +0800 From: Wen Congyang MIME-Version: 1.0 References: <1429090543-4736-1-git-send-email-mst@redhat.com> <552E35E9.7070605@huawei.com> In-Reply-To: <552E35E9.7070605@huawei.com> Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] vhost: fix log base address List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: zhanghailiang , "Michael S. Tsirkin" , qemu-devel@nongnu.org Cc: Peter Maydell , peter.huangpeng@huawei.com On 04/15/2015 05:56 PM, zhanghailiang wrote: > On 2015/4/15 17:37, Michael S. Tsirkin wrote: >> VHOST_SET_LOG_BASE got an incorrect address, causing >> migration errors and potentially even memory corruption. >> >> Cc: Peter Maydell >> Reported-by: Wen Congyang >> Signed-off-by: Michael S. Tsirkin >> --- >> >> Could you please confirm this fixes the problem for you? >> >> hw/virtio/vhost.c | 5 ++++- >> 1 file changed, 4 insertions(+), 1 deletion(-) >> >> diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c >> index 8dd2f59..02c5604 100644 >> --- a/hw/virtio/vhost.c >> +++ b/hw/virtio/vhost.c >> @@ -1016,10 +1016,13 @@ int vhost_dev_start(struct vhost_dev *hdev, VirtIODevice *vdev) >> } >> >> if (hdev->log_enabled) { >> + uint64_t log_base; >> + >> hdev->log_size = vhost_get_log_size(hdev); >> hdev->log = hdev->log_size ? >> g_malloc0(hdev->log_size * sizeof *hdev->log) : NULL; >> - r = hdev->vhost_ops->vhost_call(hdev, VHOST_SET_LOG_BASE, hdev->log); >> + log_base = (uint64_t)(unsigned long)log_base; > ^^^^^^^^ > > s/log_base/hdev->log ? I test the patch with this modification. It works for me. Thanks Wen Congyang > >> + r = hdev->vhost_ops->vhost_call(hdev, VHOST_SET_LOG_BASE, &log_base); >> if (r < 0) { >> r = -errno; >> goto fail_log; >> > > > . >