]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
cxl/hdm: Fix potential infinite loop in __cxl_dpa_reserve()
authorLi Ming <ming.li@zohomail.com>
Mon, 12 Jan 2026 12:05:26 +0000 (20:05 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 23 Jan 2026 10:21:17 +0000 (11:21 +0100)
[ Upstream commit d4026a44626490dc4eca4dd2c4d0816338fa179b ]

In __cxl_dpa_reserve(), it will check if the new resource range is
included in one of paritions of the cxl memory device.
cxlds->nr_paritions is used to represent how many partitions information
the cxl memory device has. In the loop, if driver cannot find a
partition including the new resource range, it will be an infinite loop.

[ dj: Removed incorrect fixes tag ]

Fixes: 991d98f17d31 ("cxl: Make cxl_dpa_alloc() DPA partition number agnostic")
Signed-off-by: Li Ming <ming.li@zohomail.com>
Reviewed-by: Ira Weiny <ira.weiny@intel.com>
Reviewed-by: Dave Jiang <dave.jiang@intel.com>
Link: https://patch.msgid.link/20260112120526.530232-1-ming.li@zohomail.com
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/cxl/core/hdm.c

index d3a094ca01ad9e37807dccfd9b72186f16b99e7e..20dd63810806267d05aef438d5a03116b56873e7 100644 (file)
@@ -403,7 +403,7 @@ static int __cxl_dpa_reserve(struct cxl_endpoint_decoder *cxled,
         * is not set.
         */
        if (cxled->part < 0)
-               for (int i = 0; cxlds->nr_partitions; i++)
+               for (int i = 0; i < cxlds->nr_partitions; i++)
                        if (resource_contains(&cxlds->part[i].res, res)) {
                                cxled->part = i;
                                break;