Skip to content

Commit 471d884

Browse files
djbwdavejiang
authored andcommitted
cxl/region: Constify cxl_region_resource_contains()
The call to cxl_region_resource_contains() in hmem_register_cxl_device() need not cast away 'const'. The problem is the usage of the bus_for_each_dev() API which does not mark its @DaTa parameter as 'const'. Switch to bus_find_device() which does take 'const' @DaTa, fixup cxl_region_resource_contains() and its caller. Signed-off-by: Dan Williams <dan.j.williams@intel.com> Reviewed-by: Ira Weiny <ira.weiny@intel.com> Reviewed-by: Alison Schofield <alison.schofield@intel.com> Reviewed-by: Dave Jiang <dave.jiang@intel.com> Link: https://patch.msgid.link/20260327052821.440749-5-dan.j.williams@intel.com Signed-off-by: Dave Jiang <dave.jiang@intel.com>
1 parent b6a61d5 commit 471d884

3 files changed

Lines changed: 9 additions & 8 deletions

File tree

drivers/cxl/core/region.c

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4225,9 +4225,9 @@ static int cxl_region_setup_poison(struct cxl_region *cxlr)
42254225
return devm_add_action_or_reset(dev, remove_debugfs, dentry);
42264226
}
42274227

4228-
static int region_contains_resource(struct device *dev, void *data)
4228+
static int region_contains_resource(struct device *dev, const void *data)
42294229
{
4230-
struct resource *res = data;
4230+
const struct resource *res = data;
42314231
struct cxl_region *cxlr;
42324232
struct cxl_region_params *p;
42334233

@@ -4246,11 +4246,12 @@ static int region_contains_resource(struct device *dev, void *data)
42464246
return resource_contains(p->res, res) ? 1 : 0;
42474247
}
42484248

4249-
bool cxl_region_contains_resource(struct resource *res)
4249+
bool cxl_region_contains_resource(const struct resource *res)
42504250
{
42514251
guard(rwsem_read)(&cxl_rwsem.region);
4252-
return bus_for_each_dev(&cxl_bus_type, NULL, res,
4253-
region_contains_resource) != 0;
4252+
struct device *dev __free(put_device) = bus_find_device(
4253+
&cxl_bus_type, NULL, res, region_contains_resource);
4254+
return !!dev;
42544255
}
42554256
EXPORT_SYMBOL_FOR_MODULES(cxl_region_contains_resource, "dax_hmem");
42564257

drivers/cxl/cxl.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -941,7 +941,7 @@ struct cxl_pmem_region *to_cxl_pmem_region(struct device *dev);
941941
int cxl_add_to_region(struct cxl_endpoint_decoder *cxled);
942942
struct cxl_dax_region *to_cxl_dax_region(struct device *dev);
943943
u64 cxl_port_get_spa_cache_alias(struct cxl_port *endpoint, u64 spa);
944-
bool cxl_region_contains_resource(struct resource *res);
944+
bool cxl_region_contains_resource(const struct resource *res);
945945
#else
946946
static inline bool is_cxl_pmem_region(struct device *dev)
947947
{
@@ -964,7 +964,7 @@ static inline u64 cxl_port_get_spa_cache_alias(struct cxl_port *endpoint,
964964
{
965965
return 0;
966966
}
967-
static inline bool cxl_region_contains_resource(struct resource *res)
967+
static inline bool cxl_region_contains_resource(const struct resource *res)
968968
{
969969
return false;
970970
}

drivers/dax/hmem/hmem.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ static int hmem_register_cxl_device(struct device *host, int target_nid,
159159
IORES_DESC_CXL) == REGION_DISJOINT)
160160
return 0;
161161

162-
if (cxl_region_contains_resource((struct resource *)res)) {
162+
if (cxl_region_contains_resource(res)) {
163163
dev_dbg(host, "CXL claims resource, dropping: %pr\n", res);
164164
return 0;
165165
}

0 commit comments

Comments
 (0)