From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56636) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bc7ra-0000Z8-HS for qemu-devel@nongnu.org; Tue, 23 Aug 2016 05:19:23 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bc7rU-00077F-Tp for qemu-devel@nongnu.org; Tue, 23 Aug 2016 05:19:17 -0400 Received: from [59.151.112.132] (port=10901 helo=heian.cn.fujitsu.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bc7rU-00073H-Ew for qemu-devel@nongnu.org; Tue, 23 Aug 2016 05:19:12 -0400 From: Cao jin Date: Tue, 23 Aug 2016 17:27:30 +0800 Message-ID: <1471944454-13895-2-git-send-email-caoj.fnst@cn.fujitsu.com> In-Reply-To: <1471944454-13895-1-git-send-email-caoj.fnst@cn.fujitsu.com> References: <1471944454-13895-1-git-send-email-caoj.fnst@cn.fujitsu.com> MIME-Version: 1.0 Content-Type: text/plain Subject: [Qemu-devel] [PATCH v2 1/5] msix_init: assert programming error List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Markus Armbruster , Marcel Apfelbaum , "Michael S. Tsirkin" The input parameters is used for creating the msix capable device, so they must obey the PCI spec, or else, it should be programming error. CC: Markus Armbruster CC: Marcel Apfelbaum CC: Michael S. Tsirkin Signed-off-by: Cao jin --- hw/pci/msix.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/hw/pci/msix.c b/hw/pci/msix.c index 0ec1cb1..384a29d 100644 --- a/hw/pci/msix.c +++ b/hw/pci/msix.c @@ -253,9 +253,7 @@ int msix_init(struct PCIDevice *dev, unsigned short nentries, return -ENOTSUP; } - if (nentries < 1 || nentries > PCI_MSIX_FLAGS_QSIZE + 1) { - return -EINVAL; - } + assert(nentries >= 1 && nentries <= PCI_MSIX_FLAGS_QSIZE + 1); table_size = nentries * PCI_MSIX_ENTRY_SIZE; pba_size = QEMU_ALIGN_UP(nentries, 64) / 8; @@ -266,7 +264,7 @@ int msix_init(struct PCIDevice *dev, unsigned short nentries, table_offset + table_size > memory_region_size(table_bar) || pba_offset + pba_size > memory_region_size(pba_bar) || (table_offset | pba_offset) & PCI_MSIX_FLAGS_BIRMASK) { - return -EINVAL; + assert(0); } cap = pci_add_capability(dev, PCI_CAP_ID_MSIX, cap_pos, MSIX_CAP_LENGTH); -- 2.1.0