From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:47948) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RiS5e-0007Id-FC for qemu-devel@nongnu.org; Wed, 04 Jan 2012 09:45:24 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RiS5c-0007EB-Dm for qemu-devel@nongnu.org; Wed, 04 Jan 2012 09:45:18 -0500 Received: from mx1.redhat.com ([209.132.183.28]:51262) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RiS5c-0007DW-3P for qemu-devel@nongnu.org; Wed, 04 Jan 2012 09:45:16 -0500 Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q04EjEDL019286 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 4 Jan 2012 09:45:14 -0500 Date: Wed, 4 Jan 2012 16:47:22 +0200 From: "Michael S. Tsirkin" Message-ID: <20120104144721.GA5961@redhat.com> References: <1325687322-6797-1-git-send-email-avi@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1325687322-6797-1-git-send-email-avi@redhat.com> Subject: Re: [Qemu-devel] [PATCH master/stable-1.0] pci: fix corrupted pci conf index register by unaligned write List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Avi Kivity Cc: qemu-devel@nongnu.org On Wed, Jan 04, 2012 at 04:28:42PM +0200, Avi Kivity wrote: > Commit d0ed8076cbdc261 converted the PCI config access to the memory > API, but also inadvertantly changed it to accept unaligned writes, > and corrupt the index register in the process. This causes a regression > booting NetBSD. > > Fix by ignoring unaligned or non-dword writes. > > https://bugs.launchpad.net/qemu/+bug/897771 > > Reported-by: Andreas Gustafsson > Signed-off-by: Avi Kivity Acked-by: Michael S. Tsirkin > --- > > hw/pci_host.c | 3 +++ > 1 files changed, 3 insertions(+), 0 deletions(-) > > diff --git a/hw/pci_host.c b/hw/pci_host.c > index 44c6c20..8041778 100644 > --- a/hw/pci_host.c > +++ b/hw/pci_host.c > @@ -101,6 +101,9 @@ static void pci_host_config_write(void *opaque, target_phys_addr_t addr, > > PCI_DPRINTF("%s addr " TARGET_FMT_plx " len %d val %"PRIx64"\n", > __func__, addr, len, val); > + if (addr != 0 || len != 4) { > + return; > + } > s->config_reg = val; > } > > -- > 1.7.7.1