From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36632) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1akQGD-0000PB-Oc for qemu-devel@nongnu.org; Mon, 28 Mar 2016 02:02:46 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1akQGA-0006Mi-H6 for qemu-devel@nongnu.org; Mon, 28 Mar 2016 02:02:45 -0400 Received: from mail-wm0-x244.google.com ([2a00:1450:400c:c09::244]:33458) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1akQGA-0006Me-AG for qemu-devel@nongnu.org; Mon, 28 Mar 2016 02:02:42 -0400 Received: by mail-wm0-x244.google.com with SMTP id 77so7136526wmi.0 for ; Sun, 27 Mar 2016 23:02:42 -0700 (PDT) References: <1458320487-19603-1-git-send-email-armbru@redhat.com> <87shzk3u9w.fsf@blackfin.pond.sub.org> From: Marcel Apfelbaum Message-ID: <56F8C8FE.8010209@gmail.com> Date: Mon, 28 Mar 2016 09:02:38 +0300 MIME-Version: 1.0 In-Reply-To: <87shzk3u9w.fsf@blackfin.pond.sub.org> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PULL 00/40] ivshmem: Fixes, cleanups, device model split Reply-To: marcel@redhat.com List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Markus Armbruster , "Michael S. Tsirkin" , Marcel Apfelbaum Cc: Peter Maydell , QEMU Developers On 03/21/2016 02:11 PM, Markus Armbruster wrote: > Peter Maydell writes: > > [...] >> Also some new clang ubsan warnings on x86 Linux: >> GTESTER check-qtest-i386 >> [deleted existing warnings about slirp code] >> /home/petmay01/linaro/qemu-for-merges/hw/pci/pci.c:166:23: runtime >> error: shift exponent -1 is negative >> /home/petmay01/linaro/qemu-for-merges/hw/pci/pci.c:171:24: runtime >> error: shift exponent -1 is negative >> /home/petmay01/linaro/qemu-for-merges/hw/pci/pci.c:172:24: runtime >> error: shift exponent -1 is negative > > Root cause tracked down with the appended patch. PCI maintainers, you > might want to steal it. > Had anyone handled this already? Thanks, Marcel > > diff --git a/hw/pci/pci.c b/hw/pci/pci.c > index e67664d..1937c42 100644 > --- a/hw/pci/pci.c > +++ b/hw/pci/pci.c > @@ -163,11 +163,13 @@ int pci_bar(PCIDevice *d, int reg) > > static inline int pci_irq_state(PCIDevice *d, int irq_num) > { > + assert(irq_num >= 0); > return (d->irq_state >> irq_num) & 0x1; > } > > static inline void pci_set_irq_state(PCIDevice *d, int irq_num, int level) > { > + assert(irq_num >= 0); > d->irq_state &= ~(0x1 << irq_num); > d->irq_state |= level << irq_num; > } >