Re: [PATCH 3/5] cxl/region: Prevent device_find_child() from modifying caller's match data

From: Przemek Kitszel
Date: Mon Aug 12 2024 - 08:55:16 EST


On 8/11/24 02:18, Zijun Hu wrote:
From: Zijun Hu <quic_zijuhu@xxxxxxxxxxx>

It does not make sense for match_free_decoder() as device_find_child()'s
match function to modify caller's match data,

match_free_decoder() is just doing that, treating caller's match data as
a piece of memory to store their int.
(So it is hard to tell it does not make sense "for [it] ... to").

fixed by using
constify_device_find_child_helper() instead of device_find_child().

I don't like the constify... name, I would go with something like
device_find_child_mut() or similar.


Signed-off-by: Zijun Hu <quic_zijuhu@xxxxxxxxxxx>
---
drivers/cxl/core/region.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c
index 21ad5f242875..266231d69dff 100644
--- a/drivers/cxl/core/region.c
+++ b/drivers/cxl/core/region.c
@@ -849,7 +849,8 @@ cxl_region_find_decoder(struct cxl_port *port,
dev = device_find_child(&port->dev, &cxlr->params,
match_auto_decoder);
else
- dev = device_find_child(&port->dev, &id, match_free_decoder);
+ dev = constify_device_find_child_helper(&port->dev, &id,
+ match_free_decoder);
if (!dev)
return NULL;
/*