get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2197252,
    "url": "http://patchwork.ozlabs.org/api/patches/2197252/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260217153010.408739-2-ankita@nvidia.com/",
    "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": "<20260217153010.408739-2-ankita@nvidia.com>",
    "list_archive_url": null,
    "date": "2026-02-17T15:30:08",
    "name": "[v4,1/3] hw/vfio: sort and validate sparse mmap regions by offset",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "5d83a7fd8c315c33bd934c90bee52d7fabfa2393",
    "submitter": {
        "id": 86155,
        "url": "http://patchwork.ozlabs.org/api/people/86155/?format=api",
        "name": "Ankit Agrawal",
        "email": "ankita@nvidia.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260217153010.408739-2-ankita@nvidia.com/mbox/",
    "series": [
        {
            "id": 492441,
            "url": "http://patchwork.ozlabs.org/api/series/492441/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=492441",
            "date": "2026-02-17T15:30:09",
            "name": "hw/vfio: Enable hugepfnmap for non-power-of-2 device memory regions",
            "version": 4,
            "mbox": "http://patchwork.ozlabs.org/series/492441/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2197252/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2197252/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\tdkim=pass (2048-bit key;\n unprotected) header.d=Nvidia.com header.i=@Nvidia.com header.a=rsa-sha256\n header.s=selector2 header.b=S0WC6Q8o;\n\tdkim-atps=neutral",
            "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 4fFkBw12SBz1xpY\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 18 Feb 2026 02:31:36 +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 1vsN2k-0005na-ME; Tue, 17 Feb 2026 10:31:19 -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 <ankita@nvidia.com>) id 1vsN2X-0005hO-TF\n for qemu-devel@nongnu.org; Tue, 17 Feb 2026 10:31:11 -0500",
            "from\n mail-northcentralusazlp170100001.outbound.protection.outlook.com\n ([2a01:111:f403:c105::1] helo=CH1PR05CU001.outbound.protection.outlook.com)\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <ankita@nvidia.com>) id 1vsN2L-00077H-Gh\n for qemu-devel@nongnu.org; Tue, 17 Feb 2026 10:30:58 -0500",
            "from MN2PR18CA0004.namprd18.prod.outlook.com (2603:10b6:208:23c::9)\n by CH8PR12MB9837.namprd12.prod.outlook.com (2603:10b6:610:2b4::21)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.13; Tue, 17 Feb\n 2026 15:30:41 +0000",
            "from BN3PEPF0000B373.namprd21.prod.outlook.com\n (2603:10b6:208:23c:cafe::f3) by MN2PR18CA0004.outlook.office365.com\n (2603:10b6:208:23c::9) with Microsoft SMTP Server (version=TLS1_3,\n cipher=TLS_AES_256_GCM_SHA384) id 15.20.9611.16 via Frontend Transport; Tue,\n 17 Feb 2026 15:30:35 +0000",
            "from mail.nvidia.com (216.228.117.160) by\n BN3PEPF0000B373.mail.protection.outlook.com (10.167.243.170) with Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.9654.0 via Frontend Transport; Tue, 17 Feb 2026 15:30:41 +0000",
            "from rnnvmail202.nvidia.com (10.129.68.7) by mail.nvidia.com\n (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Tue, 17 Feb\n 2026 07:30:12 -0800",
            "from rnnvmail201.nvidia.com (10.129.68.8) by rnnvmail202.nvidia.com\n (10.129.68.7) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Tue, 17 Feb\n 2026 07:30:12 -0800",
            "from localhost.nvidia.com (10.127.8.12) by mail.nvidia.com\n (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20 via Frontend\n Transport; Tue, 17 Feb 2026 07:30:11 -0800"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=hyA7Ljb82lz9lJIClAjK5KHq8nQ6OnRVv0JAjIU3OSN2FjXviWSwJXn88Zy9EfJNYb9DxGsauQNpFeo+zVaC+dc136qGhWq+DuntbEA4kTo+9BE7Tt65kazg/K1itvtn0uuchIWioFRSihJPRkTQmB1EIYd5dsIu0G+10NG8aQvm3dnYIfQs4o8/vUWAzQm+BbcLgxWQXyjK6S9i2AvU8Td09yWZ6w21WuubGbyY3X1LZsozda9+mByKVopQ3xCuOMxEVVyIwTy1XfWO/nbJS32f0Qkr0mqvXVFS/ZRkjzLA8Pc4tQWt3hpv2dGv+qEx/SB7zpS1cIilKvhRKsAnRQ==",
        "ARC-Message-Signature": "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=TuyBaWoelCVx18qm29+HVbKaglucZ6HTet0RqaDEb/4=;\n b=julPst6sX/LVrG5wLsi0F1hzxGf5wDS58ZRw/iIg+uvZ0MRXfDPnuwYQnqxckD/uCSgUWCKjy+nBJge1u2CjAv3IXb9v9tEThcS4TKZizB56Dtw/kddb5E8OrFZEEgYVdYeOE++f4iAUgwObmp3PAi18njV5yZSncQXNWv/tXB8LsnlYw9PmQz8R3K0IVlkqAPnp8p9vUEScG6Q+9nYI6+7JSkmGnLiKy0k83dCYgp8Qp6+dDCPGU6l+UMsB9PggYA+PnrfgI2IZ508blhXEenSxquHK2DDIYCg567Pg6CCNEXd3BHDKcP+pBzaGcxW71uS2N0SiWuP2dx4p6p+hqw==",
        "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 216.228.117.160) smtp.rcpttodomain=shazbot.org smtp.mailfrom=nvidia.com;\n dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com;\n dkim=none (message not signed); arc=none (0)",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com;\n s=selector2;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=TuyBaWoelCVx18qm29+HVbKaglucZ6HTet0RqaDEb/4=;\n b=S0WC6Q8oMWAxQ5lgIBGYfTd3pG3yGSFNlND64AyH8y/CLw58+HluRNAhGQsLya88gus7N/zhRSoD3ujbQGSm8HnjErz0n2dQpbZ/omip63i/69zvURZUxPgEOtmkGEpG/+nLtyQby2ReGui1yftRh9e+dgHAVr80w+ygotpdqcIIcM1eyAlmwIij/P15rdpgnkNvmUZ5DP5zD9xmM1a7nSoA/qyaoL+8skCXZd+KKFektGxBuIt8/zGqhwgJkgvj+Se3lqID5n+GtjTGqTyrdVzAyzkgBJ24eDcQsXCqpZYtUkMH3Wg7BGgANoI5yJ7hIIL74Slx8vr5vd3km5Gh+w==",
        "X-MS-Exchange-Authentication-Results": "spf=pass (sender IP is 216.228.117.160)\n smtp.mailfrom=nvidia.com;\n dkim=none (message not signed)\n header.d=none;dmarc=pass action=none header.from=nvidia.com;",
        "Received-SPF": [
            "Pass (protection.outlook.com: domain of nvidia.com designates\n 216.228.117.160 as permitted sender) receiver=protection.outlook.com;\n client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C",
            "permerror client-ip=2a01:111:f403:c105::1;\n envelope-from=ankita@nvidia.com;\n helo=CH1PR05CU001.outbound.protection.outlook.com"
        ],
        "From": "<ankita@nvidia.com>",
        "To": "<ankita@nvidia.com>, <vsethi@nvidia.com>, <jgg@nvidia.com>,\n <skolothumtho@nvidia.com>, <alex@shazbot.org>, <clg@redhat.com>",
        "CC": "<aniketa@nvidia.com>, <cjia@nvidia.com>, <kwankhede@nvidia.com>,\n <targupta@nvidia.com>, <zhiw@nvidia.com>, <mochs@nvidia.com>,\n <kjaju@nvidia.com>, <qemu-devel@nongnu.org>",
        "Subject": "[PATCH v4 1/3] hw/vfio: sort and validate sparse mmap regions by\n offset",
        "Date": "Tue, 17 Feb 2026 15:30:08 +0000",
        "Message-ID": "<20260217153010.408739-2-ankita@nvidia.com>",
        "X-Mailer": "git-send-email 2.34.1",
        "In-Reply-To": "<20260217153010.408739-1-ankita@nvidia.com>",
        "References": "<20260217153010.408739-1-ankita@nvidia.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-NV-OnPremToCloud": "ExternallySecured",
        "X-EOPAttributedMessage": "0",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-TrafficTypeDiagnostic": "BN3PEPF0000B373:EE_|CH8PR12MB9837:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "b52db2f2-3377-4afc-6061-08de6e398267",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "BCL:0;\n ARA:13230040|376014|1800799024|82310400026|36860700013|7053199007;",
        "X-Microsoft-Antispam-Message-Info": "\n 3NDSMjlxu4pfdnrSKSmDREuk4w+sSLP6e2A8xjRGi05iDb2Zr9u2RI4826fIZbT3Kzb/xyf+M7Nm7yBKailh801AGiM7Etwp8qeMm5tnl7MhzoPjNp1R0hUAauXCEjXDTg2zGQ0EZ6CnJPSNlJptW7Ma8Z3ZjcGrMa1z/GlNgtWnyBB3Ul2ZZ54EDhWcRBb+QP9Z8GeNavNIv/6G5Mx6Y73N7OQ6rnBzmFNR77X0sCEWj9661Rq2ttD5m4ECH665FKcTRzhcW+kRM7R0uXUuCXyeQAgTQRuyrqi9XK3ei9gt68AatwUQo6hhmszI7NqoY3b8RHtJly6k3Xq4UsMreaOlW4W/zPJSmbYKWBpCq60e2LSSqt28LjOaz0TbtJ/t61UHGb5bCsNHvgHfnubTYtSrB4/owT/FFCEiYfLHppks2DM9ie2dQQ3VAYccgKu5xf6KgE6KSZnEjGJcJzb2CtxyWoi7TOQHQ1z7wJfXIorsaR37aiEmODzNHhuzvvgLzuXKMYirWJ7DZ+iNqtcrNz64oLcmub4JDN+oe+2WlSwsRl+Feoy6RksoYv/OuodMufYFiOY0a2DRmQBQD9o6f1iUz7g4AQOIsqHX4hThf07Xwm1Do7VzcwZkjgTZBe8MQbHvrbJopFueLlE3Cj7KDXh5dXED5xEOpovybQsGb6nlcUuXm8dyLdGt5LLzMelHCS/Aoo04UKTdeOScJ4WrHEwETa/z7ZGhNSYhN27H/IDMtjSBXL7M3KeMkXxTS904N+HfJVO8soWl2TRTT4E4Y3HorRuhrV5v6QTVMe9DeoumlcNf0716YemmXrzIVsBjHCCULj4rYqUZI/G/avzee4ERrsoA77b7IvjzTe/YKAsGsqqAF6M6qVxPOY3CkgUbifP0ZKpOE492Mw0RmBFBaPXWAuXkx32w9qD8EtOKq5Mv9FfQMcA65TM5yooGcCKr4iQ+Fcm2u/YPqltKNwg/omnEen8OlYi1qb+DJgPJTPCpPYOS/bTYgQ9JaF3PsyXBXNXn8LNaq9ElS5Z4TI5+c2e5f0OLI11/hg3b/7jienHowSjC4j9OzDbYNIVKageQfymrJL0DX5Y+gCnq9ASpkIruqZCnNK+sO/O7OdBOcWmPewhg1RZk7oYMzN6imszkkWvuUMbbfXeiHvRXkILifFFnRY78fZydBoTaL9aVmjX1qgkP6pZFiHumNP7694Q0aLAaSABTslslGXcS+zmlXOWFfzmGHnbwcnykakTep4kRRXgIHPmKjHY5Jchoh6v+aRkLgsUz8ooeNA9K3BbLaJnG2bEde/Xc88X379RtfepDpPRgO+jGyllJlgFFYIdKRJ34kok5yu1SU9s3pCd3JorYlMqyGOUlB7+u932sVGlpZre7nnay13TJ/dLRT5nOiv1XTgSRflsIO5OjqX+u04RCRUkVkiiJ/6LsV8mA6Q0H6DRidRsgIgtcHyVJp94VRnppTM9BmC1pCnU5N6ZUQ8EIQ55fFoEJUTPEvkI8zcL0ECHwhy/cHXMNBWtTtxu3dQ4hHF0T1iJ5psrbzTmRr/yN5pe50sxxZu8Rm2RRVqklZkDvEeHSx+f0UX46pCt3c+gZH8e5aTD8kp2zXDJ/SVgew3sn1c2vWS+TNJHhPp1nHAmjDombS1qHZvVen8YKpypMilathSmz2b4Dkuw50Q==",
        "X-Forefront-Antispam-Report": "CIP:216.228.117.160; CTRY:US; LANG:en; SCL:1;\n SRV:;\n IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge1.nvidia.com; CAT:NONE;\n SFS:(13230040)(376014)(1800799024)(82310400026)(36860700013)(7053199007);\n DIR:OUT; SFP:1101;",
        "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1",
        "X-MS-Exchange-AntiSpam-MessageData-0": "\n l9NnRZTJLTqrhKwpBYnVIdzeD/hh/QvWsKZun7EQgU0O0+grwrqL6buA895cPFNP42SQrNGrTTkQzOXUDA/XVk0IbqFIeNqxx/6LAcJRXsR6LGWveJSSFJ9fJPbtY+r6pOduYZ2ycwL11P6u8S5qh/l5yQsepVdF7spaqxi62cF+d2gVz8VpxHtWnOHAwpN576k5B1prszanh6+8hd3tzhr31Q140srBDhOLvkCd0Dl7eiFzR2DEBYPVZt6cuYwJuim5mSyW0VjadWOSQJ5JYAmaM0p/KjzOT85IHHU+8f8b4O6Chbe2N56UuqMKW5F8hJI25BBf2Cxs4urKB/JFLZfKTuuW3aFmQquDUiNIJEy3HAS/FGMLIpgnNbygUZrckEFzHZoDRPcR7UeGRQlkvAE6kMs3cRVfi7dP7XNM9lxHUD+mXa3BNb60a8usxi1i",
        "X-OriginatorOrg": "Nvidia.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "17 Feb 2026 15:30:41.1256 (UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n b52db2f2-3377-4afc-6061-08de6e398267",
        "X-MS-Exchange-CrossTenant-Id": "43083d15-7273-40c1-b7db-39efd9ccc17a",
        "X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp": "\n TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.117.160];\n Helo=[mail.nvidia.com]",
        "X-MS-Exchange-CrossTenant-AuthSource": "\n BN3PEPF0000B373.namprd21.prod.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Anonymous",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "CH8PR12MB9837",
        "X-Spam_score_int": "-10",
        "X-Spam_score": "-1.1",
        "X-Spam_bar": "-",
        "X-Spam_report": "(-1.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.043,\n DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n FORGED_SPF_HELO=1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001,\n SPF_NONE=0.001 autolearn=no 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: Ankit Agrawal <ankita@nvidia.com>\n\nSort sparse mmap regions by offset during region setup to ensure\npredictable mapping order, avoid overlaps and a proper handling\nof the gaps between sub-regions.\n\nAdd validation to detect overlapping sparse regions early during\nsetup before any mapping operations begin.\n\nThe sorting is performed on the subregions ranges during\nvfio_setup_region_sparse_mmaps(). This also ensures that subsequent\nmapping code can rely on subregions being in ascending offset order.\n\nThis is preparatory work for alignment adjustments needed to support\nhugepfnmap on systems where device memory (e.g., Grace-based systems)\nmay have non-power-of-2 sizes.\n\ncc: Alex Williamson <alex@shazbot.org>\nReviewed-by: Alex Williamson <alex@shazbot.org>\nReviewed-by: Shameer Kolothum <skolothumtho@nvidia.com>\nSigned-off-by: Ankit Agrawal <ankita@nvidia.com>\n---\n hw/vfio/region.c | 46 +++++++++++++++++++++++++++++++++++++++++++++-\n 1 file changed, 45 insertions(+), 1 deletion(-)",
    "diff": "diff --git a/hw/vfio/region.c b/hw/vfio/region.c\nindex ab39d77574..8fbc98918f 100644\n--- a/hw/vfio/region.c\n+++ b/hw/vfio/region.c\n@@ -149,6 +149,19 @@ static const MemoryRegionOps vfio_region_ops = {\n     },\n };\n \n+static int vfio_mmap_compare_offset(const void *a, const void *b)\n+{\n+    const VFIOMmap *mmap_a = a;\n+    const VFIOMmap *mmap_b = b;\n+\n+    if (mmap_a->offset < mmap_b->offset) {\n+        return -1;\n+    } else if (mmap_a->offset > mmap_b->offset) {\n+        return 1;\n+    }\n+    return 0;\n+}\n+\n static int vfio_setup_region_sparse_mmaps(VFIORegion *region,\n                                           struct vfio_region_info *info)\n {\n@@ -182,6 +195,35 @@ static int vfio_setup_region_sparse_mmaps(VFIORegion *region,\n     region->nr_mmaps = j;\n     region->mmaps = g_realloc(region->mmaps, j * sizeof(VFIOMmap));\n \n+    /*\n+     * Sort sparse mmaps by offset to ensure proper handling of gaps\n+     * and predictable mapping order in vfio_region_mmap().\n+     */\n+    if (region->nr_mmaps > 1) {\n+        qsort(region->mmaps, region->nr_mmaps, sizeof(VFIOMmap),\n+              vfio_mmap_compare_offset);\n+\n+        /*\n+         * Validate that sparse regions don't overlap after sorting.\n+         */\n+        for (i = 1; i < region->nr_mmaps; i++) {\n+            off_t prev_end = region->mmaps[i - 1].offset +\n+                             region->mmaps[i - 1].size;\n+            if (prev_end > region->mmaps[i].offset) {\n+                error_report(\"%s: overlapping sparse mmap regions detected \"\n+                             \"in region %d: [0x%\"PRIx64\"-0x%\"PRIx64\"] overlaps \"\n+                             \"with [0x%\"PRIx64\"-0x%\"PRIx64\"]\",\n+                             __func__, region->nr, region->mmaps[i - 1].offset,\n+                             prev_end - 1, region->mmaps[i].offset,\n+                             region->mmaps[i].offset + region->mmaps[i].size - 1);\n+                g_free(region->mmaps);\n+                region->mmaps = NULL;\n+                region->nr_mmaps = 0;\n+                return -EINVAL;\n+            }\n+        }\n+    }\n+\n     return 0;\n }\n \n@@ -213,11 +255,13 @@ int vfio_region_setup(Object *obj, VFIODevice *vbasedev, VFIORegion *region,\n \n             ret = vfio_setup_region_sparse_mmaps(region, info);\n \n-            if (ret) {\n+            if (ret == -ENODEV) {\n                 region->nr_mmaps = 1;\n                 region->mmaps = g_new0(VFIOMmap, region->nr_mmaps);\n                 region->mmaps[0].offset = 0;\n                 region->mmaps[0].size = region->size;\n+            } else if (ret) {\n+                return ret;\n             }\n         }\n     }\n",
    "prefixes": [
        "v4",
        "1/3"
    ]
}