get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/2196551/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2196551,
    "url": "http://patchwork.ozlabs.org/api/patches/2196551/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/linux-pci/patch/20260214193235.262219-5-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": "<20260214193235.262219-5-ionut.nechita@windriver.com>",
    "list_archive_url": null,
    "date": "2026-02-14T19:32:37",
    "name": "[v1,1/1] PCI/IOV: Add nested locking in sriov_add_vfs/sriov_del_vfs for complete serialization",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "61ec71066b776684242a387198a16ffe8c8e1849",
    "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/20260214193235.262219-5-ionut.nechita@windriver.com/mbox/",
    "series": [
        {
            "id": 492192,
            "url": "http://patchwork.ozlabs.org/api/series/492192/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/linux-pci/list/?series=492192",
            "date": "2026-02-14T19:32:35",
            "name": "PCI/IOV: Fix unprotected sriov_del_vfs() against concurrent hotplug",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/492192/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2196551/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2196551/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "\n <linux-pci+bounces-47290-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=h1Z8g7gm;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c0a:e001:db::12fc:5321; helo=sea.lore.kernel.org;\n envelope-from=linux-pci+bounces-47290-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=\"h1Z8g7gm\"",
            "smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=205.220.166.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 sea.lore.kernel.org (sea.lore.kernel.org\n [IPv6:2600:3c0a:e001:db::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 4fCzk637c6z1xr1\n\tfor <incoming@patchwork.ozlabs.org>; Sun, 15 Feb 2026 06:34:06 +1100 (AEDT)",
            "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id C2EBA3026AB3\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 14 Feb 2026 19:33:52 +0000 (UTC)",
            "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 872F62FF66A;\n\tSat, 14 Feb 2026 19:33:52 +0000 (UTC)",
            "from mx0a-0064b401.pphosted.com (mx0a-0064b401.pphosted.com\n [205.220.166.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 B7F6623183F;\n\tSat, 14 Feb 2026 19:33:50 +0000 (UTC)",
            "from pps.filterd (m0250809.ppops.net [127.0.0.1])\n\tby mx0a-0064b401.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 61EJK1aD1024949;\n\tSat, 14 Feb 2026 11:33:37 -0800",
            "from sj2pr03cu001.outbound.protection.outlook.com\n (mail-westusazon11012011.outbound.protection.outlook.com [52.101.43.11])\n\tby mx0a-0064b401.pphosted.com (PPS) with ESMTPS id 4casehg6jy-1\n\t(version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT);\n\tSat, 14 Feb 2026 11:33:37 -0800 (PST)",
            "from MN2PR11MB3885.namprd11.prod.outlook.com (2603:10b6:208:151::27)\n by CO1PR11MB5044.namprd11.prod.outlook.com (2603:10b6:303:92::5) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.10; Sat, 14 Feb\n 2026 19:33:34 +0000",
            "from MN2PR11MB3885.namprd11.prod.outlook.com\n ([fe80::a8bb:9703:986e:845]) by MN2PR11MB3885.namprd11.prod.outlook.com\n ([fe80::a8bb:9703:986e:845%4]) with mapi id 15.20.9611.008; Sat, 14 Feb 2026\n 19:33:33 +0000"
        ],
        "ARC-Seal": [
            "i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1771097632; cv=fail;\n b=Q6wN/yYM3Y1wPtRAxrSmhPVt4YFFhCz/xl9LF1YerKiCpmblrdFTNhiUFO9+mPH6BhBgi9tAwc4eSAxZz+acHd7vJbtqDd4Qsz4X88Gl++qrpbi9e7fyjvPV/zLRspOaRPvVhGSal6ooh/nJv1y5qXsdwEILIIIEu1Vj4yb8zAw=",
            "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=yHicOYIH0rhXidjwabwOwibCKpMyoeANgIGZ5Wnq8jVKWeda12gol4ZpvbRUENMg3K3iFdIVzcx+9quf6MhYQa0Hw4bicJRxscB0ZzdaDpGEDnosbs2chO7xw3gUHLrIOc2+Eg5SBqRaTXPWTtdPk6XOK4G48r8noL1HDWwGqGvngkBxJuCsXMVuAqsw/gZabNY/97YmYOBdc00supacbs2sGshUQ4Kr7Ki4icsE5SjWgWUcINzDXDxPQRbP6i9lKmztDVlPZlbjr4QabA0XRvr4VQATR5AfPi1rWEWKIkGyrK6Uy9hKpaKiUSR8EwzIojqhNAhkJPTs9HQQJASSXQ=="
        ],
        "ARC-Message-Signature": [
            "i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1771097632; c=relaxed/simple;\n\tbh=Dl0hwCWMgGb7PQU+8zGk8VYU+BYEs7s09q1g1Z18GMU=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t Content-Type:MIME-Version;\n b=Uvr1an3vXJipIKd/QiRQwj15SIyFjVh//b3YhyzOYMyW0vgfag4hLQANKuW2yIJSWSf7D8L7ySGWCJbUmDdWs7z5aNJL8C1oC92kq78otIPK1cxZ77wK7EKnhlvSFbwjgiUGCaZraS9S8R2dsN/EC7NgrwZcVAqcZYqT1qE5b+o=",
            "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=JcMkbpOC1uAJ1YlzyTspHYrJuZRirw7GYwKjB7tXR7Y=;\n b=fB5NmkK+faKg+4pzDyWpYVYldUEIb+bNFPms9bTp+PfWa7udkE4cuJrIKIZ023vlipJtj1pz5qt50GinM/0BMnbEAQAisnWudlyhf0ZaSMsGjkqf7egHR2Z4lhT9x8BwdN/g6EIBSYXR0Mte9TYmdVmoX2O7xvGV7cxaSb6w4jYG3sP49GXCegqhGAFcZsrGKKWsH554huUGMFiUV156h/u3ckb+/DS/aQpRiSl4cLz7zCBoVLsG92fwhxePNvqmG4AB73EH3B0EXtDLbhD+ZJdlyF8ew9kLaUgvc9itwyKan4lRnJHZvdBKZ/7qTR+KwI4fCGtxBwVItMbzCefdgQ=="
        ],
        "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=h1Z8g7gm; arc=fail smtp.client-ip=205.220.166.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=JcMkbpOC1uAJ1YlzyTspHYrJuZRirw7GYwKjB7tXR7Y=; b=\n\th1Z8g7gm5nxU7BkUIatlIxWWsQeSBqG1nH8Om5ndqQUN3vmvd49McXLcgJAHNBMc\n\tkKJ4l+Q58z7zGJljcmihc3/AEgr+jTnjhWJZ84DdaLQ3OnulkJTF+u0P9KGktIg8\n\thj+rT/TgZfq0vw3cU3pXo6eIxPBMsCwfWK3Sh4wMfbY0rRCaxJBTa/ZLoAg4kwA0\n\tOhlc+aiZkVao/qdk50Aw0gTDOtkFVUFV5KsOaIy81L9D8RqkmePdL5LOXGShD6C+\n\tbEJqbyU+JRUKU33rtZufAQ2HsAHa58vrVZnFJaHrx04oJ4mji0JJwccnHKudT0sz\n\tGjHjUkhv85z2Ko+Bob+6Lg==",
        "From": "\"Ionut Nechita (Wind River)\" <ionut.nechita@windriver.com>",
        "To": "Bjorn Helgaas <helgaas@kernel.org>",
        "Cc": "Bjorn Helgaas <bhelgaas@google.com>, Sebastian Ott <sebott@linux.ibm.com>,\n        Niklas Schnelle <schnelle@linux.ibm.com>,\n        Benjamin Block <bblock@linux.ibm.com>,\n        Farhan Ali <alifm@linux.ibm.com>,\n Julian Ruess <julianr@linux.ibm.com>,\n        Ionut Nechita <sunlightlinux@gmail.com>, linux-pci@vger.kernel.org,\n        linux-kernel@vger.kernel.org,\n        Ionut Nechita <ionut.nechita@windriver.com>, stable@vger.kernel.org,\n        Ionut Nechita <ionut_n2001@yahoo.com>",
        "Subject": "[PATCH v1 1/1] PCI/IOV: Add nested locking in\n sriov_add_vfs/sriov_del_vfs for complete serialization",
        "Date": "Sat, 14 Feb 2026 21:32:37 +0200",
        "Message-ID": "<20260214193235.262219-5-ionut.nechita@windriver.com>",
        "X-Mailer": "git-send-email 2.53.0",
        "In-Reply-To": "<20260214193235.262219-3-ionut.nechita@windriver.com>",
        "References": "<20260214193235.262219-3-ionut.nechita@windriver.com>",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-ClientProxiedBy": "VI1PR0102CA0073.eurprd01.prod.exchangelabs.com\n (2603:10a6:803:15::14) To MN2PR11MB3885.namprd11.prod.outlook.com\n (2603:10b6:208:151::27)",
        "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": "MN2PR11MB3885:EE_|CO1PR11MB5044:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "2debb0f4-0282-4d5b-f94a-08de6bfff0ff",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "\n\tBCL:0;ARA:13230040|376014|7416014|10070799003|52116014|366016|1800799024;",
        "X-Microsoft-Antispam-Message-Info": "\n hSHqQ6KRomFm/QwOkCCqxXMQ+gOePjRg0I3Ed0h6NI3GCvS2hpNlUYsvF75kAyYPpABJAvll/RWhWESyoBtxlECA+tTPzmJfghECHyzoTb+VYq2mhEk39xiTUaxHv5Tf8rS0sds47SPsGP782W2Ux8IN46LEBgkk5WqXuWzZPcqoPhPGsb6twDuBwt/rilFdp2OL8k0mpfQfcYza5MnFHOZtrJTi9jeT4Yqgzx3zKfWLqsP+Yi2S6jU9gQ4X5zckarcvm6moy0SbDPGNhXFZiq8QzRoiocRhAVSkwr6RKe0gU1vUVPPIKfH8o84tPMy1L5JzmL8lwu6a9smJgSS9Auc8562ndSPY3/qc+M4NbWceLRL6MoRC7rvFdhALeaRZrMuGunTTbaU4E4CEBvtDaQAqF1l/g5LmpF9Ut/+7wMVY5I1IkT843ysBT6Qcqo8cZDgdtimd+pj25wbtaABv2R+hY46NKUZ5PjnObzNaYVyoW4IJ73qlguntOeiH2upXasDRchJVF6Y/X9pLzE4zp2x8RAWpU2u5+k5mLKB2+fveV+JfrsT7FKd76iKq7sbhSkDBU13yOqWQ/dQpTk5d10V4Eavn9zwgUczn1pPg9ucv7fEc9q1S2Xd57OzRROs/FcIs+FDs4WWBiOWhnffyrjC4jiOEEOOOo0AAdiWhw61ILHS+efhPO6JRldVlR17P92F4vylvt7DMrlWkq9Lbz5L9gIqL3KB5vJOKLhN+vZCTJxC24eE9k103unMAGGMT2KVSRrBJwZJfU7FX2PtmJG5QzHRduQlA2osLPscntqm2qg1pbsoaVfm8YTk3OFYeVHr1DTjGAVQRxUAlkReJmaXrcvdrcBkGNMVsWXajVd5wEsZRbPc1vvRVP/t4KyoIDCum8WkxowAqKLU4FIv7f1P2tn57kHAMKPs7dz9Y7KFGBzfhJB62pWT82V6WSz41WvTgWyLKLg/uLdCltI2dzZWA99+MiD1nOByyqSjXATKpoa+q+S4RljixIOdxTpTRLrApwE/DfyLYwUCiitbqEmqnzP8W/CYT5FG2alz2CFW8ss3KJwk2+i/udImSsjOwLoIQVq+wlTDAmrOPj+4ayRp4ZsrpUT5wxkGXFcWKaaEnwoeT1rSUaitw9y+m+V0n++pUtQHOvCbM8gFQtl9GPg3SzsmQ6kk5GJVavwJyqI1I/aT7aaZxysCZ7ugSq8/QOrd254xBeiY49m+OORfUTPozBV7JcUlyuLUY5bKktg5h/jv75ch1uzevVPoTB0EHXw5ILJbx2wS37lXJTNCXNCSOgCmFMbP0YrYQN+HA9scmE0mhSR6MJm4jcQJG0jchg5/X7Hwb7+Y352RjigArlRvyrYFHiz8GKc+DB4ItYZsn4g91I6e7EWyDGyfdzrbafyT6iEjFsVj5ot+ek7gEAhN3r0FS5mmbuoYO6yid33k8bMau63D3H7TyYQl/qvgTGvzfEpIE3ExsEcOPFvg2GQ0kLPkdSZ6yZy0WoO8rv7TrhJgqQR/R+GTVX7eUkkIgJGJL1Klk3B8/iscuQUCDbTulc0IIHz3pVcwAFok10Q0=",
        "X-Forefront-Antispam-Report": "\n\tCIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR11MB3885.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(10070799003)(52116014)(366016)(1800799024);DIR:OUT;SFP:1101;",
        "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "2",
        "X-MS-Exchange-AntiSpam-MessageData-0": "\n CNl8HtUv+t6J2rzQAKqefUvKytoTpB/V4SVNDuWePwhOhKBTpzqqxw03l9M87X6NnK2HZXd5fDfMDCdS3qlFwTJ0TocKL7ZSDBuOuXzMKjn+fIpxjegHbzhrKfixXMQhVXc61vzgWC/epuwobDF4INR67M+KfznTaLEe5pQzrh2rfPlCAcV5srGGHL9roNFW7vmVPBzFh/pW+CsJQw/IQW4Swu1977YrH/Spnm7D/q8TdeRPGEuEXyHGOGGcvwNEqWaedDlErJH5Ozca1stRQdR6VsrtCi3/S9eJhQIBCvty3yedfr5/1mcuqTaVF1kh4AGuOL0ypvcZ+1byP52ohRT7dh2TMN7KW9EkH0EYIIW5Xm0HiOUrcx9fNp9QZWCpMnLBAGE9oSl/99uFzgVpmfuUURGvyW7vdFM4xZijF0af88lvE9kzY2j8ho1oYDA43WGMOg5xFauDYJxrtAJUjTvL1F1bbcWju01dbRxmIuLqdBH9vg9WvYX4fAwUFNMgk1K4q9MjKk4cIUYyQgdWd/aZv1IBilixqFchOBGh1H5y2ziAQtjvYjATZl6pipBokkAgEvv41AmUR40NzGImvKCz8e71Js+xt9cGaMSD9KC1BU4nEwHgzOi1EsJdLyhB0alwKfhrtt6felmr6dumbO+GZkrOEmeS8xMvbHGIx+Yvuiuo406GKjm0DTuChPsYjW1y31FqgzJBV6VB181Ba1Votvsg18Af1DyKWE4Z306lhcv3H6cGHFKq9MfoFycEdtUWWkBwFBWaYvtXtaNXfJwBQapRCIObgbACmvQ4TkqrU89EOy2fY3reHgG/zHJ2Ssu+hTsxalp/Dia+0GlwrI4jpVbqYPFQtsbKSKKH978vdCrJHqsvuqYjmhcXjik2mSl91PoQGX/Y2h0LRHjz07KX8Ub1v341yvG6/356mHFOFp4OrP5eoX7gVS1R+mLkZXWvp9gNKfBk6bQ/5XAPsjTj2PycKLQKFK35I/VLDbYVvZh9p33odWo61FpADOB4FY+2RjsBIkg4E/I43/0hC382cJmetfWDYfpIZ8pGE6Eug5VVSE5YWn0DWSbeExBj1d89jd18pWr9t7doCBBzQEv7VSrNiGdvu06f8VAaOl0rLwzH4Rod3aZVMGW3c/WX/K1AjEBNwYGcrvdTld+pG/lw8GaYX8eEtItZjaq7RmVx8NNpsfuh6XYiA72RJrGBukG0gkLs7snzOOy8h9K6DQTFg8VSiADR+AZ0z3r24+NarHMZy0OkVG44VBQwbf2zP4i4OUIzD/qSj3D6iIQzrRXhS/MpRaPzaGbLHbGJZlPVoR49sTkUDDii/GMzLHu79hUC7A/ZmD5d4EFw6KtG00RQc29BSlk7BJc2g1GhrRa6QlLKokTTQzN/5c+HAIKj/2OdE1wCHwHChfDZlOg9ngSoYKbNUHUFlWPYDay15AhxbD1ynY634eWMA2xwuWcRey2/wXCBmP3BrlcKH4I/BSf9BJRDoqpbUxG202X0+6HIp1EVf9bf1SxsG5/d0EgfX7ppR35gQaiUENCVdi/s2xT8CZi273pvRdV+mE9zfRE4Z28UpVTn55L3n4lgZRe7TcOv42Wg8pSm59oz70njrgrXV8fG3l/+xaDgI3N4/EmVzP8vvXUK8NLaqWmvjEqgIOkExQFViDw82FT+NB4GxgO+QiCltgpQh9IZ6NeKNVTt/AZEHFg8GK600mTLiRCFqOOLGYsxk6Srz95aOLFrBy/2vTytAPvqSyMMIgHG1V/e0Z+47kmIoWRC/gDTwWUDzJHJ6WAs",
        "X-MS-Exchange-AntiSpam-MessageData-1": "0QpyY/9KYLtn4TDEXXDzKujXIaWJdRMJGmY=",
        "X-OriginatorOrg": "windriver.com",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 2debb0f4-0282-4d5b-f94a-08de6bfff0ff",
        "X-MS-Exchange-CrossTenant-AuthSource": "MN2PR11MB3885.namprd11.prod.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Internal",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "14 Feb 2026 19:33:33.8804\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 nyEmStleWWks32rfnrDy9CqXAxydQpXcOCrckZqLDdR4/5u7peGNa7VSqdoXIp/QlUtixee5iksTCT9qo4gRtxyOFJrturMK2Gpj6xJ63Cs=",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "CO1PR11MB5044",
        "X-Proofpoint-Spam-Details-Enc": "AW1haW4tMjYwMjE0MDE2MyBTYWx0ZWRfX9y6InFIXSLb4\n tQFrpGV60+IKuuE7fcUjFGHGwmtrp62m0ula+GqCttbK1vwa7xoJdupl/EF1fj/tycBr8N4lNOd\n a28bjsrHlQTMP5W6tVgPhyG8NnDvZv/TIa4k7G1KLm6KDCn164ZsKPiPpntDZWwIccZ4r7sy3GU\n ZqJgooT0KNtYpoLJPLsipPXYxQBnYT5+4PcOsEagDlj9+bVvzhH7VWExHyMqqbX+FuPAaB6vqCe\n /V5jY/rjhYE2q+6MAWO4FEG0c5f4+4T362DPrfma9a2Y3YvZlWoU8bzE9bZfhkm/K1oU2pQbdKv\n D71Xb28GFeTb9EqfA/qg04rfcIiOJPLoTs/M/wVVo+UyAsM3l5OfCCzoybT3NldnVeqMaDFas2a\n Lj6ucoszpqdAJDLC4gU/TsVdHQz5H1udjkLdsERL5WXT+atSZqJeQzFql5oUE65E7wBiXnMDW7t\n gIUOC+OwEnq//gUpdxQ==",
        "X-Proofpoint-ORIG-GUID": "d1WJwzjFOZl0sfXA0j8JAHoCcPtvvwRT",
        "X-Proofpoint-GUID": "d1WJwzjFOZl0sfXA0j8JAHoCcPtvvwRT",
        "X-Authority-Analysis": "v=2.4 cv=Fek6BZ+6 c=1 sm=1 tr=0 ts=6990ce11 cx=c_pps\n a=/yS4kdDgObtqNMJizKN72Q==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19\n a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19\n a=xqWC_Br6kY4A:10 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22\n a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=t7CeM3EgAAAA:8\n a=VwQbUJbxAAAA:8 a=CjxXgO3LAAAA:8 a=6S3VQf3ZLieD-afqmuUA:9\n a=FdTzh2GWekK77mhwV6Dw:22",
        "X-Proofpoint-Virus-Version": "vendor=baseguard\n engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49\n definitions=2026-02-14_02,2026-02-13_01,2025-10-01_01",
        "X-Proofpoint-Spam-Details": "rule=outbound_notspam policy=outbound score=0\n spamscore=0 lowpriorityscore=0 phishscore=0 priorityscore=1501 bulkscore=0\n clxscore=1011 malwarescore=0 suspectscore=0 impostorscore=0 adultscore=0\n classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0\n reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602140163"
    },
    "content": "From: Ionut Nechita <ionut.nechita@windriver.com>\n\nAfter 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\nInstead, introduce owner tracking for pci_rescan_remove_lock via a new\npci_lock_rescan_remove_nested() helper. This function checks if the\ncurrent task already holds the lock:\n - If the lock is not held: acquires it and returns true, providing\n   full serialization against concurrent hotplug events (including\n   platform-generated events on s390).\n - If the lock is already held by the current task (nested call from\n   remove_store or sriov_numvfs_store paths): returns false without\n   re-acquiring, avoiding deadlock while the caller already provides\n   the necessary serialization.\n - If the lock is held by another task (concurrent hotplug): blocks\n   until the lock is released, then acquires it, providing complete\n   serialization. This is the key improvement over a trylock approach.\n\nFixes: 18f9e9d150fc (\"PCI/IOV: Factor out sriov_add_vfs()\")\nCc: stable@vger.kernel.org\nSigned-off-by: Ionut Nechita <ionut_n2001@yahoo.com>\nSigned-off-by: Ionut Nechita <ionut.nechita@windriver.com>\n---\n drivers/pci/iov.c   | 10 ++++++++++\n drivers/pci/pci.h   |  1 +\n drivers/pci/probe.c | 12 ++++++++++++\n 3 files changed, 23 insertions(+)",
    "diff": "diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c\nindex 4a659c34935e..38372ac0e2ad 100644\n--- a/drivers/pci/iov.c\n+++ b/drivers/pci/iov.c\n@@ -629,19 +629,25 @@ static int sriov_add_vfs(struct pci_dev *dev, u16 num_vfs)\n {\n \tunsigned int i;\n \tint rc;\n+\tbool nested;\n \n \tif (dev->no_vf_scan)\n \t\treturn 0;\n \n+\tnested = !pci_lock_rescan_remove_nested();\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+\tif (!nested)\n+\t\tpci_unlock_rescan_remove();\n \treturn 0;\n failed:\n \twhile (i--)\n \t\tpci_iov_remove_virtfn(dev, i);\n+\tif (!nested)\n+\t\tpci_unlock_rescan_remove();\n \n \treturn rc;\n }\n@@ -764,10 +770,14 @@ static int sriov_enable(struct pci_dev *dev, int nr_virtfn)\n static void sriov_del_vfs(struct pci_dev *dev)\n {\n \tstruct pci_sriov *iov = dev->sriov;\n+\tbool nested;\n \tint i;\n \n+\tnested = !pci_lock_rescan_remove_nested();\n \tfor (i = 0; i < iov->num_VFs; i++)\n \t\tpci_iov_remove_virtfn(dev, i);\n+\tif (!nested)\n+\t\tpci_unlock_rescan_remove();\n }\n \n static void sriov_disable(struct pci_dev *dev)\ndiff --git a/drivers/pci/pci.h b/drivers/pci/pci.h\nindex c8a0522e2e1f..7d3b705728fd 100644\n--- a/drivers/pci/pci.h\n+++ b/drivers/pci/pci.h\n@@ -367,6 +367,7 @@ static inline void pci_remove_legacy_files(struct pci_bus *bus) { }\n /* Lock for read/write access to pci device and bus lists */\n extern struct rw_semaphore pci_bus_sem;\n extern struct mutex pci_slot_mutex;\n+bool pci_lock_rescan_remove_nested(void);\n \n extern raw_spinlock_t pci_lock;\n \ndiff --git a/drivers/pci/probe.c b/drivers/pci/probe.c\nindex 7711f579fa1d..5f38ed0c641a 100644\n--- a/drivers/pci/probe.c\n+++ b/drivers/pci/probe.c\n@@ -3478,19 +3478,31 @@ 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 struct task_struct *pci_rescan_remove_owner;\n \n void pci_lock_rescan_remove(void)\n {\n \tmutex_lock(&pci_rescan_remove_lock);\n+\tpci_rescan_remove_owner = current;\n }\n EXPORT_SYMBOL_GPL(pci_lock_rescan_remove);\n \n void pci_unlock_rescan_remove(void)\n {\n+\tpci_rescan_remove_owner = NULL;\n \tmutex_unlock(&pci_rescan_remove_lock);\n }\n EXPORT_SYMBOL_GPL(pci_unlock_rescan_remove);\n \n+bool pci_lock_rescan_remove_nested(void)\n+{\n+\tif (pci_rescan_remove_owner == current)\n+\t\treturn false;\n+\tpci_lock_rescan_remove();\n+\treturn true;\n+}\n+EXPORT_SYMBOL_GPL(pci_lock_rescan_remove_nested);\n+\n static int __init pci_sort_bf_cmp(const struct device *d_a,\n \t\t\t\t  const struct device *d_b)\n {\n",
    "prefixes": [
        "v1",
        "1/1"
    ]
}