Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2216259/?format=api
{ "id": 2216259, "url": "http://patchwork.ozlabs.org/api/patches/2216259/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-pci/patch/20260326083534.23602-2-ionut.nechita@windriver.com/", "project": { "id": 28, "url": "http://patchwork.ozlabs.org/api/projects/28/?format=api", "name": "Linux PCI development", "link_name": "linux-pci", "list_id": "linux-pci.vger.kernel.org", "list_email": "linux-pci@vger.kernel.org", "web_url": null, "scm_url": null, "webscm_url": null, "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20260326083534.23602-2-ionut.nechita@windriver.com>", "list_archive_url": null, "date": "2026-03-26T08:35:33", "name": "[v11,1/2] PCI/IOV: Make pci_lock_rescan_remove() reentrant and protect sriov_add_vfs/sriov_del_vfs", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "e03dd71109a493d6d484b3657ee25e7e9507066a", "submitter": { "id": 92607, "url": "http://patchwork.ozlabs.org/api/people/92607/?format=api", "name": "Ionut Nechita (Wind River)", "email": "ionut.nechita@windriver.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/linux-pci/patch/20260326083534.23602-2-ionut.nechita@windriver.com/mbox/", "series": [ { "id": 497550, "url": "http://patchwork.ozlabs.org/api/series/497550/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-pci/list/?series=497550", "date": "2026-03-26T08:35:33", "name": "PCI/IOV: Fix SR-IOV locking races and AB-BA deadlock", "version": 11, "mbox": "http://patchwork.ozlabs.org/series/497550/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2216259/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2216259/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "\n <linux-pci+bounces-51160-incoming=patchwork.ozlabs.org@vger.kernel.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "linux-pci@vger.kernel.org" ], "Delivered-To": "patchwork-incoming@legolas.ozlabs.org", "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=windriver.com header.i=@windriver.com\n header.a=rsa-sha256 header.s=PPS06212021 header.b=NSeTyGFC;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c09:e001:a7::12fc:5321; helo=sto.lore.kernel.org;\n envelope-from=linux-pci+bounces-51160-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)", "smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=windriver.com header.i=@windriver.com\n header.b=\"NSeTyGFC\"", "smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=205.220.178.238", "smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=windriver.com", "smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=windriver.com" ], "Received": [ "from sto.lore.kernel.org (sto.lore.kernel.org\n [IPv6:2600:3c09:e001:a7::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fhHGN0xGTz1y1x\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 26 Mar 2026 19:37:48 +1100 (AEDT)", "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sto.lore.kernel.org (Postfix) with ESMTP id A3DDA3058058\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 26 Mar 2026 08:36:51 +0000 (UTC)", "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 198FB3B8BBF;\n\tThu, 26 Mar 2026 08:36:43 +0000 (UTC)", "from mx0b-0064b401.pphosted.com (mx0b-0064b401.pphosted.com\n [205.220.178.238])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 989653B7B84;\n\tThu, 26 Mar 2026 08:36:35 +0000 (UTC)", "from pps.filterd (m0250812.ppops.net [127.0.0.1])\n\tby mx0a-0064b401.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 62Q4C8W7174395;\n\tThu, 26 Mar 2026 08:36:00 GMT", "from co1pr03cu002.outbound.protection.outlook.com\n (mail-westus2azon11010070.outbound.protection.outlook.com [52.101.46.70])\n\tby mx0a-0064b401.pphosted.com (PPS) with ESMTPS id 4d1ja6x7fa-1\n\t(version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT);\n\tThu, 26 Mar 2026 08:35:59 +0000 (GMT)", "from SJ2PR11MB7546.namprd11.prod.outlook.com (2603:10b6:a03:4cc::8)\n by CH3PR11MB8364.namprd11.prod.outlook.com (2603:10b6:610:174::19) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.9; Thu, 26 Mar\n 2026 08:35:57 +0000", "from SJ2PR11MB7546.namprd11.prod.outlook.com\n ([fe80::ca9b:dcf:8881:bced]) by SJ2PR11MB7546.namprd11.prod.outlook.com\n ([fe80::ca9b:dcf:8881:bced%5]) with mapi id 15.20.9769.004; Thu, 26 Mar 2026\n 08:35:57 +0000" ], "ARC-Seal": [ "i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1774514202; cv=fail;\n b=HQrySMUqhdYwr5sdE2D0Qt/CDw7QcSkqLkGYcHIrhQyJXbuu7hMauspQUVvYlG5ZRj4TH3r98eUGdxhWBagNzVbWWWEleORfZBNyiRCJHhH9jdn4ZVz/UyFCmu1BwTChkUywqUn1RL0IPICXZTQOuWjvRRdCI3cy/Vu3G0+0Yk8=", "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=by8978COXeSNeufqBOPi2E5FrRiuz77uACY3buQ5CoudcBANQuQmy8/JIRYZsJo20FR1AD1lnPXO3b69u77rTa8/H51+YxhrUc4fpMY7PMVMme9hfe1Gqcc00Ok4WSKCCvWoZUp5znsK68TGNmtIFLhFcyvG+ySjLlAPdE6gw1ftyO2KbfHA0IG0vwaa6K8sL03dnyc77K5Ssa5XQVZ+M1wEUIN6ZlOl13ngvBy+NyvNk3+cdYQb8TqP8EN9OBp6G7Hshg2XXRzVyKFNuFXag982czTDbCu3Tmfu14CVLkSCTTyekuSE+TB4UQaHfTVvM3AgsGlx8+k3Q7fCz+xQsg==" ], "ARC-Message-Signature": [ "i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1774514202; c=relaxed/simple;\n\tbh=JRvP46L7F2eaASRamyg1n2OBlwShDNWp/UbpXnod+po=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t Content-Type:MIME-Version;\n b=HTIDvnjpS4kjt+TvksRxzyCXWP44KM28M0uRpR+/46DnDZOE36Q7lR6ZmCQrx5qkkxMFhi2mVaq7tQxS2LkXbfLECaHuHs4LkXru6I6iFF+3thVGU1pOS+S38EfUk9/zmnYQmRojkb4HgezGbgi7vg6+hmu5C3XeAQN5Eif4Slw=", "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=GYKfeUJP+8speWTR0SHRvsqPoYjKRtNA6Qqabxat15I=;\n b=mqC5zH0+UyTmpKf6n4vWwQQS0nFzOZnQdNSAXJ1wqy0ozA6SzFn5L8GJXkESh7CifjJ6vxkdHKOcY6LmI76lQRqF13A7aLV74Yne/AfVGXn9iXvOJ2DT1vJ2JMnVvuDxOmGXmSA8lirEVZkscMLxuGQtAy9e2tAfj0zWw7iL2xELQ8MuLvUM02SVfYqGDPQcGmabYVYtAxuK/3iFeTiqvDXpRs77nYl+oZLBJg71s3+HeZUnq6lqWfkZT9RIQTOQAMX9/rOWnyL+++hx/2EhqYVBRwmAo7i6Ij36yLtAiC1Vs7SvDtBr8JbZyhy30H36jBRVAy2DmY1Su7q1RZpGeg==" ], "ARC-Authentication-Results": [ "i=2; smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=windriver.com;\n spf=pass smtp.mailfrom=windriver.com;\n dkim=pass (2048-bit key) header.d=windriver.com header.i=@windriver.com\n header.b=NSeTyGFC; arc=fail smtp.client-ip=205.220.178.238", "i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=windriver.com; dmarc=pass action=none\n header.from=windriver.com; dkim=pass header.d=windriver.com; arc=none" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=windriver.com;\n\t h=cc:content-transfer-encoding:content-type:date:from\n\t:in-reply-to:message-id:mime-version:references:subject:to; s=\n\tPPS06212021; bh=GYKfeUJP+8speWTR0SHRvsqPoYjKRtNA6Qqabxat15I=; b=\n\tNSeTyGFCE+kyjY7hWiJxUK4MDi+RjT2gTatk32Vv0oap/JOLbWgvYJrmSLhZ961Q\n\t1A3qpHEa3fVR15SLXUm/ZY5Vei246Vh5daglIR1pWPwEWq51ZkNKst7sQyRW2QNz\n\t8THX7b/QnRjsy5fiRYfYkZ8BgP0nyIikJzpom3/KJLk1B01K94InC7dvytFz2hUd\n\tWpAmSntLOVyzHMW12hAVlqTFIfeoXWg33Xv2zYYPHlwASXyfJVa1Dtrh+1jdo2OO\n\tmRSnV/kZjOyPhDke1ddEhfmQQv+C8Y4PT1bOpUAiUk+UnQgVgZx+44LGdDEKl9e0\n\t6w7g6hLhKkNV4uGJXk53bw==", "From": "\"Ionut Nechita (Wind River)\" <ionut.nechita@windriver.com>", "To": "linux-pci@vger.kernel.org, bhelgaas@google.com", "Cc": "helgaas@kernel.org, sebott@linux.ibm.com, schnelle@linux.ibm.com,\n bblock@linux.ibm.com, linux@roeck-us.net, lukas@wunner.de,\n stable@vger.kernel.org, linux-kernel@vger.kernel.org,\n intel-xe@lists.freedesktop.org, matthew.brost@intel.com,\n michal.wajdeczko@intel.com, piotr.piorkowski@intel.com,\n dtatulea@nvidia.com, mani@kernel.org, kbusch@kernel.org,\n lkml@mageta.org, alifm@linux.ibm.com, julianr@linux.ibm.com,\n ionut_n2001@yahoo.com, sunlightlinux@gmail.com,\n \"Ionut Nechita (Wind River)\" <ionut.nechita@windriver.com>", "Subject": "[PATCH v11 1/2] PCI/IOV: Make pci_lock_rescan_remove() reentrant and\n protect sriov_add_vfs/sriov_del_vfs", "Date": "Thu, 26 Mar 2026 10:35:33 +0200", "Message-ID": "<20260326083534.23602-2-ionut.nechita@windriver.com>", "X-Mailer": "git-send-email 2.53.0", "In-Reply-To": "<20260326083534.23602-1-ionut.nechita@windriver.com>", "References": "<20260326083534.23602-1-ionut.nechita@windriver.com>", "Content-Transfer-Encoding": "8bit", "Content-Type": "text/plain", "X-ClientProxiedBy": "BE1P281CA0360.DEUP281.PROD.OUTLOOK.COM\n (2603:10a6:b10:82::24) To SJ2PR11MB7546.namprd11.prod.outlook.com\n (2603:10b6:a03:4cc::8)", "Precedence": "bulk", "X-Mailing-List": "linux-pci@vger.kernel.org", "List-Id": "<linux-pci.vger.kernel.org>", "List-Subscribe": "<mailto:linux-pci+subscribe@vger.kernel.org>", "List-Unsubscribe": "<mailto:linux-pci+unsubscribe@vger.kernel.org>", "MIME-Version": "1.0", "X-MS-PublicTrafficType": "Email", "X-MS-TrafficTypeDiagnostic": "SJ2PR11MB7546:EE_|CH3PR11MB8364:EE_", "X-MS-Office365-Filtering-Correlation-Id": "4b2ccd9b-ec09-44c3-ad0d-08de8b12b390", "X-MS-Exchange-SenderADCheck": "1", "X-MS-Exchange-AntiSpam-Relay": "0", "X-Microsoft-Antispam": "\n\tBCL:0;ARA:13230040|1800799024|366016|7416014|376014|10070799003|52116014|18002099003|56012099003|22082099003;", "X-Microsoft-Antispam-Message-Info": "\n\tQJ2w4ywpno0FXWED9WIassTHc8CzupAQVqunxgZz/wEiy+rBdYGllNkaTI7Ad2v9Ou1jaBOhJdenamqKRxKZqZ38pGXhk/c5tvjb7eN8delyXIdVn8bbquGqtjsUXe+Pw0snK4Ywc5v9tDBVCwz7jT8K/RtQ6TQ7619GGbDlcWiz8+Pv5mnoSmFOiZMaZKyUR8LZL5hDRksg+JHbjvF0k3XHy+d9ZnfeenFuTnu8nnIWECx8loZt8VhAlezQYO3XUKjE9q+NouSlI51g3Tgq3XV+Rag7rF0om7yMO9ijkJDxvyTezeugtAW4Spht5qLkpeIN9/PMGxffaFTHeS42/+14Ce5w8UVtpS7CtIHxTA7BujUIwZkFKCM3/zNhior+TF7nVZiQKjiMBcDLWie89XZ/+eOqednHY/W5VXlDZVRSp0gzVrMj/f6RQcflEQlPL1yVs2yMPb+XK9MW6w/PYMDHyw3I1a9mBVwmwauriCeYip2JJxG5hZXQ42TzGHs61N+3gF2NoN24AyMvYDM2AEMFn+GFHID2FuuGoZgiluWQZkksuLfTjQT4XxsnTUSTI/OmC3Svmvim8Y7vPEONAA4pC/xNPwOj3HMlPSFjI0LGGMegHFVzwLTg0v2xL7Yd5lQvuBC7LvaH7a4FHKAQnHTgXVtX1RvKDOcvam90W0vPObbHicDpnDJhDL2bOTh1gVWgBJO63dzfZaZtdZ2b6jO8UJwMmAffrgQdNB1VbBo=", "X-Forefront-Antispam-Report": "\n\tCIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ2PR11MB7546.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(7416014)(376014)(10070799003)(52116014)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101;", "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "2", "X-MS-Exchange-AntiSpam-MessageData-0": "\n V5ECztLgJbA/29csNYAzMe3EO+PloZVLWJk9sD0jUNw0VK4lk3vtp96v7u1cEhoFbsYV8chG4Tfm0K2hhB/aqUKUcn4vCwx4hmXwuII9P4knHC8E+gOgXHDA2hg+sJRD9ZEVR3JLUiPABik2oMZCe1fb7Mld1UReRIRViKDHGwdhvu3j2tPQM5e7NBAlCYNpsVGn58npOqOqx0GY3q2NUlEvVcKPMqiFz12he9nyQVfbl/LKrElmspSCZnfysYJFXlv5ZrZOmlrm0Keek77QhiM5GBS/xVU32jhQM0sWeLaI49tZcwOFadJLeHYFSyjco6j2BZ7dn6uhposArZ+el+FpIYZQb7KRZv24rF+StSAaTrqQasnljAvSkclQ0DeR6OIK8agKOX5oEKr+OR1woMD2QTXBYiuYFyJbJoOhTO2WqGnkSFWQABBEb3uMgF4i2HUZaoYXTddBhbat2YxAeQQMWB7zjusNjMqMXhQv+aOO9M/5KVM88KNmFrDbWdjfv5LXGyK2h7koKlaX1tNOvye5qd5z5USe4ia+L3htOhpuCRf5M69D9VofyME1d1gHKibsnqcznrJtiBFBFjTjF3xiQUVuyUdogG3SjQIWM7PULJzTaoSRCdoa6eewI6mwKkG5TwLCHj5zoEysYoSwbw1IB1zailfZfkskbMjxFA1NLttlAkxFfyZvCPlRpAEeXwFIcUQXQGAsZk9z6MeweQHJeZtV6CJ5GhNkzjCQ+6bzm1HfTwflJnUvLiz+6a7GgmYjbUsuNMj5p5KAMeU0UuDxYhnS3K+jVqzi7vKPIUSjuiMdZ5V7Ey74uRrk+u4l9YX8XsXfbd7Q9yd3lPomvAZCf+mNzwHosNbzL0zCy7KtSabscLJl8tQg9vv6tTaj9w0CqchKw7wxyLqq8bMRYFdQpNHOQqZaVxDwKuH14qcwRTT55BvjCJoL8B7YPE9TIZXnyrOm0SzW7NHnhqW9fiX5LLIVSiMo4ULBuBAMZu3QZgQJZVCY5N9s/sYsToxZkpmakVooPTP0lO8GbdBlb40KLJLBDIGwPXxmMhEnCnHrTvE0+TVhpMK6kMKdgQKoTBZYqN89zpDUIc4gOq5rcooG04GtJNtkNtFWBRta9kY9SiAabpw4YoNZKWlbM8C+CqBW8dnc33ejq+zVWGjSfA2fkK122ndAGpv/z7I0/MDiv6HAPP1uKSSiYY4nVs2z+x3yybZEfO+OR3U1oYKwvp6vO57qztf6Zqf/mTF6wY1hGwKYig4Xib/1tmxoXKKukZQykDV7B4xuo3FHBaNkN2ftqnVcyasbYBhOXLrzEEBU7JjO98dAv8R0gS04MoxfdmYV6paGFsQN9fY9ATE00WAQ7+QRQX1b5YCp6S1OX/JrwGnpFVeojSdSzMROAKIjCASJdoaW2daWaAiJtGoDaJqz2jEOPwt80kRZpkylptA9+nkzDXKHfpUWGzHSh9lWSwNyfFZcN6WtVsKyFcpm8o5842REmDvwlRtM11oq2EJbds/XnqqbKlnI/JCCt1s4gbh22CL5rfxVkfsFILASGprbFHRqGhCuorzivb85niyYDoHqK9yRVa5Ps7fLZSnD/r8SXF44YAvd5nGGJdcS+WwaNqwNcDWRg36hkOE3VxsfKdoIMN+DAOcDsZeNMRc31gOtqLaJ33QV81B5BveGfVjWQCOh+JSMO5951Bc71KNJ8N2zgAFlAO43o5xFyY8N7beXjq4KA7tTf95omo94Ttrzhoq+EJZoEWpI1EuwXneJRfNFPoAAYcZ+Pn0q2rmcGjCwUXvY", "X-MS-Exchange-AntiSpam-MessageData-1": "quzT71cVQJSQ3KCJxdGsc/mugaciyvmTnxI=", "X-Exchange-RoutingPolicyChecked": "\n\ti7uJgq3Dn4aHo3J1optZw9kR6Cy+XZaUK2NjAH1hfgkCptLt/Ji3j18nrm2J73AzSDhE6RLLuNUzK0iCh84Hw9XZnSiTOjavBoeHP6v39aZoPyLn/x5PaKwh4lJVxXg5+yEckSbBGlnaZavYvbGBtqgmkdCiPP2On/A4kjhQahQjJTWoEj4t5+dmLLlN1Ll9jZiI2kcNFp5Y73vcG/OWk1IUpEWPT6cX95O/8dtN+k11BT6OlM9Wc3sMWswvFV6bRj7CLSwlkfwE4bu21kFDPN5vWTn+HkuSvoyCKVxNsos8nK6hzIBPU6v53hoqNfIvRKSwgjMBybmPZiqqWfVZ3g==", "X-OriginatorOrg": "windriver.com", "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 4b2ccd9b-ec09-44c3-ad0d-08de8b12b390", "X-MS-Exchange-CrossTenant-AuthSource": "SJ2PR11MB7546.namprd11.prod.outlook.com", "X-MS-Exchange-CrossTenant-AuthAs": "Internal", "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "26 Mar 2026 08:35:57.2885\n (UTC)", "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted", "X-MS-Exchange-CrossTenant-Id": "8ddb2873-a1ad-4a18-ae4e-4644631433be", "X-MS-Exchange-CrossTenant-MailboxType": "HOSTED", "X-MS-Exchange-CrossTenant-UserPrincipalName": "\n P/0yu/ZYnipyxRrl4jsfWe7IOQ7ix0OO39kwYns0Kj3YQxZKYshQIEh6dC8LUUJ9VbsFEon3BzQz0iYaaBuAMBgXZSAy+R5DLxOH6A1lplA=", "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "CH3PR11MB8364", "X-Proofpoint-Spam-Details-Enc": "AW1haW4tMjYwMzI2MDA2MSBTYWx0ZWRfX62iSbdhEzKB0\n hdyYX2B4jEYnNaB3oPC+5k6I+uT65QWbHdNMWuFBAZg6k/Y6FIOD+L64+P7Mx2aaUa6yZrp70sQ\n QLovWckqc4As5dV1Pa1gtldq3o9K808/TW9xOtokQas+AtAvBZPEvIWLA6f9BucOhQOMlRgPjQq\n Q+8DbEEOVthKOkWymvJqA6vdYB9cE3iZ0JlI30F3nM3fxLBl2e2KHp0Wv0kqXqJaQUhpSUr8e22\n OzgaBqGT5CXICZt12FAqeOL1jpssN2ZEkkT1LrLR23pvlacmWHzPoxLPNqWGCr/xxAJSqFUmy0c\n BLSpgw6WmGVPSuSDRBXsjjhbRgvI9CoQG+7dPDJMPNSdz3UyGOqzrnJYiHDF1LJ8dav9h/9AHrc\n cynZA7+fZTXOo2LS2ABBlBrNxOekqSAbTIMXLHRK5jWP5suI5Is4Yl0u/w/4M0chpyQjNWHPwS6\n JYdPa/n8AzV2onwLnAw==", "X-Authority-Analysis": "v=2.4 cv=Q5vfIo2a c=1 sm=1 tr=0 ts=69c4efef cx=c_pps\n a=DyUboiW8/Fjv5kZUpInndg==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19\n a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19\n a=xqWC_Br6kY4A:10 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22\n a=bi6dqmuHe4P4UrxVR6um:22 a=fTW__CHxibyLmBMfj2wP:22 a=VwQbUJbxAAAA:8\n a=VnNF1IyMAAAA:8 a=t7CeM3EgAAAA:8 a=hh5_vNSPTWDFZ6TSUYYA:9\n a=FdTzh2GWekK77mhwV6Dw:22", "X-Proofpoint-ORIG-GUID": "ThrQ2Dkq5_na5RY6e9lPs643F1_tu1q7", "X-Proofpoint-GUID": "ThrQ2Dkq5_na5RY6e9lPs643F1_tu1q7", "X-Proofpoint-Virus-Version": "vendor=baseguard\n engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49\n definitions=2026-03-26_02,2026-03-24_01,2025-10-01_01", "X-Proofpoint-Spam-Details": "rule=outbound_notspam policy=outbound score=0\n suspectscore=0 spamscore=0 bulkscore=0 clxscore=1015 phishscore=0\n adultscore=0 impostorscore=0 malwarescore=0 priorityscore=1501\n lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc=\n route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001\n definitions=main-2603260061" }, "content": "After reverting commit 05703271c3cd (\"PCI/IOV: Add PCI rescan-remove\nlocking when enabling/disabling SR-IOV\") and moving the lock to\nsriov_numvfs_store(), the path through driver .remove() (e.g. rmmod,\nor manual unbind) that calls pci_disable_sriov() directly remains\nunprotected against concurrent hotplug events. This affects any SR-IOV\ncapable driver that calls pci_disable_sriov() from its .remove()\ncallback (i40e, ice, mlx5, bnxt, etc.).\n\nOn s390, platform-generated hot-unplug events for VFs can race with\nsriov_del_vfs() when a PF driver is being unloaded. The platform event\nhandler takes pci_rescan_remove_lock, but sriov_del_vfs() does not,\nleading to double removal and list corruption.\n\nWe cannot use a plain mutex_lock() here because sriov_del_vfs() may also\nbe called from paths that already hold pci_rescan_remove_lock (e.g.\nremove_store -> pci_stop_and_remove_bus_device_locked, or\nsriov_numvfs_store with the lock taken by the previous patch). Using\nmutex_lock() in those cases would deadlock.\n\nMake pci_lock_rescan_remove() itself reentrant using mutex_get_owner()\nand a reentrant depth counter, as suggested by Lukas Wunner and\nBenjamin Block, since these recursive locking scenarios exist elsewhere\nin the PCI subsystem:\n - If the lock is already held by the current task (checked via\n mutex_get_owner()): increments the reentrant counter and returns\n without re-acquiring, avoiding deadlock.\n - If the lock is held by another task: blocks until the lock is\n released, providing complete serialization.\n - If the lock is not held: acquires the mutex normally.\n\npci_unlock_rescan_remove() decrements the reentrant counter if it is\nnon-zero, otherwise releases the mutex.\n\nThis approach keeps the API unchanged: callers simply pair lock/unlock\ncalls without needing to track any return value or use separate\nreentrant variants.\n\nAdd pci_lock_rescan_remove()/pci_unlock_rescan_remove() calls to\nsriov_add_vfs() and sriov_del_vfs() to protect VF addition and\nremoval against concurrent hotplug events.\n\nRemove the rescan/remove locking from sriov_numvfs_store() that was\nintroduced by commit a5338e365c45 (\"PCI/IOV: Fix race between SR-IOV\nenable/disable and hotplug\"), since the locking is now handled directly\nin sriov_add_vfs() and sriov_del_vfs() where it is actually needed,\nreducing the lock scope.\n\nFixes: 18f9e9d150fc (\"PCI/IOV: Factor out sriov_add_vfs()\")\nFixes: 05703271c3cd (\"PCI/IOV: Add PCI rescan-remove locking when enabling/disabling SR-IOV\")\nFixes: a5338e365c45 (\"PCI/IOV: Fix race between SR-IOV enable/disable and hotplug\")\nCc: stable@vger.kernel.org\nSuggested-by: Lukas Wunner <lukas@wunner.de>\nSuggested-by: Benjamin Block <bblock@linux.ibm.com>\nReviewed-by: Benjamin Block <bblock@linux.ibm.com>\nTested-by: Benjamin Block <bblock@linux.ibm.com>\nReviewed-by: Niklas Schnelle <schnelle@linux.ibm.com>\nTested-by: Niklas Schnelle <schnelle@linux.ibm.com> # s390\nSigned-off-by: Ionut Nechita <ionut.nechita@windriver.com>\n---\n drivers/pci/iov.c | 9 +++++----\n drivers/pci/probe.c | 11 +++++++++--\n 2 files changed, 14 insertions(+), 6 deletions(-)", "diff": "diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c\nindex 91ac4e37ecb9c..7ed902539051e 100644\n--- a/drivers/pci/iov.c\n+++ b/drivers/pci/iov.c\n@@ -495,9 +495,7 @@ static ssize_t sriov_numvfs_store(struct device *dev,\n \n \tif (num_vfs == 0) {\n \t\t/* disable VFs */\n-\t\tpci_lock_rescan_remove();\n \t\tret = pdev->driver->sriov_configure(pdev, 0);\n-\t\tpci_unlock_rescan_remove();\n \t\tgoto exit;\n \t}\n \n@@ -509,9 +507,7 @@ static ssize_t sriov_numvfs_store(struct device *dev,\n \t\tgoto exit;\n \t}\n \n-\tpci_lock_rescan_remove();\n \tret = pdev->driver->sriov_configure(pdev, num_vfs);\n-\tpci_unlock_rescan_remove();\n \tif (ret < 0)\n \t\tgoto exit;\n \n@@ -633,15 +629,18 @@ static int sriov_add_vfs(struct pci_dev *dev, u16 num_vfs)\n \tif (dev->no_vf_scan)\n \t\treturn 0;\n \n+\tpci_lock_rescan_remove();\n \tfor (i = 0; i < num_vfs; i++) {\n \t\trc = pci_iov_add_virtfn(dev, i);\n \t\tif (rc)\n \t\t\tgoto failed;\n \t}\n+\tpci_unlock_rescan_remove();\n \treturn 0;\n failed:\n \twhile (i--)\n \t\tpci_iov_remove_virtfn(dev, i);\n+\tpci_unlock_rescan_remove();\n \n \treturn rc;\n }\n@@ -766,8 +765,10 @@ static void sriov_del_vfs(struct pci_dev *dev)\n \tstruct pci_sriov *iov = dev->sriov;\n \tint i;\n \n+\tpci_lock_rescan_remove();\n \tfor (i = 0; i < iov->num_VFs; i++)\n \t\tpci_iov_remove_virtfn(dev, i);\n+\tpci_unlock_rescan_remove();\n }\n \n static void sriov_disable(struct pci_dev *dev)\ndiff --git a/drivers/pci/probe.c b/drivers/pci/probe.c\nindex bccc7a4bdd794..ce4d351b5aa21 100644\n--- a/drivers/pci/probe.c\n+++ b/drivers/pci/probe.c\n@@ -3509,16 +3509,23 @@ EXPORT_SYMBOL_GPL(pci_rescan_bus);\n * routines should always be executed under this mutex.\n */\n DEFINE_MUTEX(pci_rescan_remove_lock);\n+static size_t pci_rescan_remove_reentrant_count;\n \n void pci_lock_rescan_remove(void)\n {\n-\tmutex_lock(&pci_rescan_remove_lock);\n+\tif (mutex_get_owner(&pci_rescan_remove_lock) == (unsigned long)current)\n+\t\tpci_rescan_remove_reentrant_count++;\n+\telse\n+\t\tmutex_lock(&pci_rescan_remove_lock);\n }\n EXPORT_SYMBOL_GPL(pci_lock_rescan_remove);\n \n void pci_unlock_rescan_remove(void)\n {\n-\tmutex_unlock(&pci_rescan_remove_lock);\n+\tif (pci_rescan_remove_reentrant_count > 0)\n+\t\tpci_rescan_remove_reentrant_count--;\n+\telse\n+\t\tmutex_unlock(&pci_rescan_remove_lock);\n }\n EXPORT_SYMBOL_GPL(pci_unlock_rescan_remove);\n \n", "prefixes": [ "v11", "1/2" ] }