From patchwork Wed Jul 22 14:41:13 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Michael S. Tsirkin" X-Patchwork-Id: 36837 Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by demeter.kernel.org (8.14.2/8.14.2) with ESMTP id n6MEgDrt006508 for ; Wed, 22 Jul 2009 14:42:13 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751219AbZGVOmL (ORCPT ); Wed, 22 Jul 2009 10:42:11 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751210AbZGVOmK (ORCPT ); Wed, 22 Jul 2009 10:42:10 -0400 Received: from mx2.redhat.com ([66.187.237.31]:59875 "EHLO mx2.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751157AbZGVOmJ (ORCPT ); Wed, 22 Jul 2009 10:42:09 -0400 Received: from int-mx2.corp.redhat.com (int-mx2.corp.redhat.com [172.16.27.26]) by mx2.redhat.com (8.13.8/8.13.8) with ESMTP id n6MEgAv5012745 for ; Wed, 22 Jul 2009 10:42:10 -0400 Received: from ns3.rdu.redhat.com (ns3.rdu.redhat.com [10.11.255.199]) by int-mx2.corp.redhat.com (8.13.1/8.13.1) with ESMTP id n6MEg9Rn028758; Wed, 22 Jul 2009 10:42:09 -0400 Received: from redhat.com (dhcp-0-94.tlv.redhat.com [10.35.0.94]) by ns3.rdu.redhat.com (8.13.8/8.13.8) with ESMTP id n6MEg7Oc017834; Wed, 22 Jul 2009 10:42:07 -0400 Date: Wed, 22 Jul 2009 17:41:13 +0300 From: "Michael S. Tsirkin" To: kvm@vger.kernel.org, avi@redhat.com, gleb@redhat.com Subject: [PATCH 1/2] qemu-kvm: msix table update thinko fix Message-ID: <20090722144113.GB7942@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.19 (2009-01-05) X-Scanned-By: MIMEDefang 2.58 on 172.16.27.26 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org When updating msi irq routing entries, we should memcpy the new entry over the old one. Current code gets it wrong, and only works because it's uncommon for guests to change MSI tables. Signed-off-by: Michael S. Tsirkin --- qemu-kvm.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/qemu-kvm.c b/qemu-kvm.c index 60e5eac..cebaa65 100644 --- a/qemu-kvm.c +++ b/qemu-kvm.c @@ -1552,7 +1552,7 @@ int kvm_update_routing_entry(kvm_context_t kvm, if (e->u.msi.address_lo == entry->u.msi.address_lo && e->u.msi.address_hi == entry->u.msi.address_hi && e->u.msi.data == entry->u.msi.data) { - memcpy(&e->u.msi, &entry->u.msi, sizeof e->u.msi); + memcpy(&e->u.msi, &newentry->u.msi, sizeof e->u.msi); return 0; } break;