Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2195034/?format=api
{ "id": 2195034, "url": "http://patchwork.ozlabs.org/api/patches/2195034/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260210121438.67781-11-mjt@tls.msk.ru/", "project": { "id": 14, "url": "http://patchwork.ozlabs.org/api/projects/14/?format=api", "name": "QEMU Development", "link_name": "qemu-devel", "list_id": "qemu-devel.nongnu.org", "list_email": "qemu-devel@nongnu.org", "web_url": "", "scm_url": "", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20260210121438.67781-11-mjt@tls.msk.ru>", "list_archive_url": null, "date": "2026-02-10T12:14:20", "name": "[Stable-10.2.1,67/78] pcie_sriov: Fix PCI_SRIOV_* accesses in pcie_sriov_pf_exit()", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "f8d147d48a93974ef0477ca73f361638dd8686a6", "submitter": { "id": 183, "url": "http://patchwork.ozlabs.org/api/people/183/?format=api", "name": "Michael Tokarev", "email": "mjt@tls.msk.ru" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260210121438.67781-11-mjt@tls.msk.ru/mbox/", "series": [ { "id": 491661, "url": "http://patchwork.ozlabs.org/api/series/491661/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=491661", "date": "2026-02-10T12:14:13", "name": "Patch Round-up for stable 10.2.1, freeze on 2026-02-10 (frozen)", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/491661/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2195034/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2195034/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>", "X-Original-To": "incoming@patchwork.ozlabs.org", "Delivered-To": "patchwork-incoming@legolas.ozlabs.org", "Authentication-Results": "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)", "Received": [ "from lists.gnu.org (lists.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4f9LBn0FPJz1xwH\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 10 Feb 2026 23:16:16 +1100 (AEDT)", "from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1vpmeS-00013R-NA; Tue, 10 Feb 2026 07:15:32 -0500", "from eggs.gnu.org ([2001:470:142:3::10])\n by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <mjt@tls.msk.ru>)\n id 1vpmeQ-00012t-Rt; Tue, 10 Feb 2026 07:15:30 -0500", "from isrv.corpit.ru ([212.248.84.144])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <mjt@tls.msk.ru>)\n id 1vpmeO-0000Dk-Cd; Tue, 10 Feb 2026 07:15:29 -0500", "from tsrv.corpit.ru (tsrv.tls.msk.ru [192.168.177.2])\n by isrv.corpit.ru (Postfix) with ESMTP id 423CC187DA5;\n Tue, 10 Feb 2026 15:13:52 +0300 (MSK)", "from think4mjt.tls.msk.ru (mjtthink.wg.tls.msk.ru [192.168.177.146])\n by tsrv.corpit.ru (Postfix) with ESMTP id D455B360CC7;\n Tue, 10 Feb 2026 15:14:47 +0300 (MSK)" ], "From": "Michael Tokarev <mjt@tls.msk.ru>", "To": "qemu-devel@nongnu.org", "Cc": "qemu-stable@nongnu.org, Kevin Wolf <kwolf@redhat.com>,\n \"Michael S. Tsirkin\" <mst@redhat.com>, Michael Tokarev <mjt@tls.msk.ru>", "Subject": "[Stable-10.2.1 67/78] pcie_sriov: Fix PCI_SRIOV_* accesses in\n pcie_sriov_pf_exit()", "Date": "Tue, 10 Feb 2026 15:14:20 +0300", "Message-ID": "<20260210121438.67781-11-mjt@tls.msk.ru>", "X-Mailer": "git-send-email 2.47.3", "In-Reply-To": "<qemu-stable-10.2.1-20260210151332@cover.tls.msk.ru>", "References": "<qemu-stable-10.2.1-20260210151332@cover.tls.msk.ru>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Received-SPF": "pass client-ip=212.248.84.144; envelope-from=mjt@tls.msk.ru;\n helo=isrv.corpit.ru", "X-Spam_score_int": "-18", "X-Spam_score": "-1.9", "X-Spam_bar": "-", "X-Spam_report": "(-1.9 / 5.0 requ) BAYES_00=-1.9,\n RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001,\n SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no", "X-Spam_action": "no action", "X-BeenThere": "qemu-devel@nongnu.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "qemu development <qemu-devel.nongnu.org>", "List-Unsubscribe": "<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>", "List-Archive": "<https://lists.nongnu.org/archive/html/qemu-devel>", "List-Post": "<mailto:qemu-devel@nongnu.org>", "List-Help": "<mailto:qemu-devel-request@nongnu.org?subject=help>", "List-Subscribe": "<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>", "Errors-To": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org", "Sender": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org" }, "content": "From: Kevin Wolf <kwolf@redhat.com>\n\nPCI_SRIOV_* are offsets into the SR-IOV capability, not into the PCI\nconfig space. pcie_sriov_pf_exit() erroneously takes them as the latter,\nwhich makes it read PCI_HEADER_TYPE and PCI_BIST when it tries to read\nPCI_SRIOV_TOTAL_VF.\n\nIn many cases we're lucky enough that the PCI config space will be 0\nthere, so we just skip the whole for loop, but this isn't guaranteed.\nFor example, setting the multifunction bit on the PF and then doing a\n'device_del' on it will get a larger number and cause a segfault.\n\nFix this and access the real PCI_SRIOV_* fields in the capability.\n\nCc: qemu-stable@nongnu.org\nFixes: 19e55471d4e8 ('pcie_sriov: Allow user to create SR-IOV device')\nSigned-off-by: Kevin Wolf <kwolf@redhat.com>\nReviewed-by: Michael S. Tsirkin <mst@redhat.com>\nSigned-off-by: Michael S. Tsirkin <mst@redhat.com>\nMessage-Id: <20251205145718.55136-1-kwolf@redhat.com>\n(cherry picked from commit f73e5ed9bc4cfacf041323a6b40a85e6b6459b75)\nSigned-off-by: Michael Tokarev <mjt@tls.msk.ru>", "diff": "diff --git a/hw/pci/pcie_sriov.c b/hw/pci/pcie_sriov.c\nindex c4f88f0975..d467284cbd 100644\n--- a/hw/pci/pcie_sriov.c\n+++ b/hw/pci/pcie_sriov.c\n@@ -195,14 +195,17 @@ bool pcie_sriov_pf_init(PCIDevice *dev, uint16_t offset,\n \n void pcie_sriov_pf_exit(PCIDevice *dev)\n {\n+ uint8_t *cfg;\n+\n if (dev->exp.sriov_cap == 0) {\n return;\n }\n+ cfg = dev->config + dev->exp.sriov_cap;\n \n if (dev->exp.sriov_pf.vf_user_created) {\n uint16_t ven_id = pci_get_word(dev->config + PCI_VENDOR_ID);\n- uint16_t total_vfs = pci_get_word(dev->config + PCI_SRIOV_TOTAL_VF);\n- uint16_t vf_dev_id = pci_get_word(dev->config + PCI_SRIOV_VF_DID);\n+ uint16_t total_vfs = pci_get_word(cfg + PCI_SRIOV_TOTAL_VF);\n+ uint16_t vf_dev_id = pci_get_word(cfg + PCI_SRIOV_VF_DID);\n \n unregister_vfs(dev);\n \n@@ -213,8 +216,6 @@ void pcie_sriov_pf_exit(PCIDevice *dev)\n pci_config_set_device_id(dev->exp.sriov_pf.vf[i]->config, vf_dev_id);\n }\n } else {\n- uint8_t *cfg = dev->config + dev->exp.sriov_cap;\n-\n unparent_vfs(dev, pci_get_word(cfg + PCI_SRIOV_TOTAL_VF));\n }\n }\n", "prefixes": [ "Stable-10.2.1", "67/78" ] }