]> git.ipfire.org Git - thirdparty/linux.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)
committerDave Jiang <dave.jiang@intel.com>
Mon, 12 Jan 2026 15:59:16 +0000 (08:59 -0700)
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>
drivers/cxl/core/hdm.c

index 1c5d2022c87a99c1d8477efac33421e5195cadb5..a470099a69f10da586250aee201275f784b6054f 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;