cxl/mem: Correct full ID range allocation
authorDavidlohr Bueso <dave@stgolabs.net>
Wed, 8 Feb 2023 18:19:44 +0000 (10:19 -0800)
committerDan Williams <dan.j.williams@intel.com>
Thu, 9 Feb 2023 16:46:10 +0000 (08:46 -0800)
For ID allocations we want 0-(max-1), ie: smatch complains:

 error: Calling ida_alloc_range() with a 'max' argument which is a power of 2. -1 missing?

Correct this and also replace the call to use the max() flavor instead.

Signed-off-by: Davidlohr Bueso <dave@stgolabs.net>
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Reviewed-by: Dave Jiang <dave.jiang@intel.com>
Link: https://lore.kernel.org/r/20230208181944.240261-1-dave@stgolabs.net
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
drivers/cxl/core/memdev.c

index a74a933..12bd9dd 100644 (file)
@@ -242,7 +242,7 @@ static struct cxl_memdev *cxl_memdev_alloc(struct cxl_dev_state *cxlds,
        if (!cxlmd)
                return ERR_PTR(-ENOMEM);
 
-       rc = ida_alloc_range(&cxl_memdev_ida, 0, CXL_MEM_MAX_DEVS, GFP_KERNEL);
+       rc = ida_alloc_max(&cxl_memdev_ida, CXL_MEM_MAX_DEVS - 1, GFP_KERNEL);
        if (rc < 0)
                goto err;
        cxlmd->id = rc;