* [PATCH] cxl: Fix unregister_region() callback parameter assignment
@ 2023-12-14 19:13 Dave Jiang
2023-12-14 21:25 ` Ira Weiny
0 siblings, 1 reply; 4+ messages in thread
From: Dave Jiang @ 2023-12-14 19:13 UTC (permalink / raw)
To: linux-cxl
Cc: dan.j.williams, ira.weiny, vishal.l.verma, alison.schofield,
Jonathan.Cameron, dave
In devm_cxl_add_region(), devm_add_action_or_reset() is called by passing
in unregister_region() with data ptr of 'cxlr'. However, in
unregister_region(), the passed in parameter is incorrectly assumed to be
a 'struct device' rather than the 'cxlr' pointer. The code has been
working because 'struct device' is the first member of 'struct
cxl_region'. Issue found by inspection. Fix the assignment so that cxlr is
pointing directly to the passed in parameter.
Fixes: 23a22cd1c98b ("cxl/region: Allocate HPA capacity to regions")
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
---
drivers/cxl/core/region.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c
index 56e575c79bb4..a61703c9d72a 100644
--- a/drivers/cxl/core/region.c
+++ b/drivers/cxl/core/region.c
@@ -2083,13 +2083,13 @@ static struct cxl_region *to_cxl_region(struct device *dev)
return container_of(dev, struct cxl_region, dev);
}
-static void unregister_region(void *dev)
+static void unregister_region(void *_cxlr)
{
- struct cxl_region *cxlr = to_cxl_region(dev);
+ struct cxl_region *cxlr = _cxlr;
struct cxl_region_params *p = &cxlr->params;
int i;
- device_del(dev);
+ device_del(&cxlr->dev);
/*
* Now that region sysfs is shutdown, the parameter block is now
@@ -2100,7 +2100,7 @@ static void unregister_region(void *dev)
detach_target(cxlr, i);
cxl_region_iomem_release(cxlr);
- put_device(dev);
+ put_device(&cxlr->dev);
}
static struct lock_class_key cxl_region_key;
^ permalink raw reply related [flat|nested] 4+ messages in thread* Re: [PATCH] cxl: Fix unregister_region() callback parameter assignment
2023-12-14 19:13 [PATCH] cxl: Fix unregister_region() callback parameter assignment Dave Jiang
@ 2023-12-14 21:25 ` Ira Weiny
2023-12-14 22:27 ` Dan Williams
0 siblings, 1 reply; 4+ messages in thread
From: Ira Weiny @ 2023-12-14 21:25 UTC (permalink / raw)
To: Dave Jiang, linux-cxl
Cc: dan.j.williams, ira.weiny, vishal.l.verma, alison.schofield,
Jonathan.Cameron, dave
Dave Jiang wrote:
> In devm_cxl_add_region(), devm_add_action_or_reset() is called by passing
> in unregister_region() with data ptr of 'cxlr'. However, in
> unregister_region(), the passed in parameter is incorrectly assumed to be
> a 'struct device' rather than the 'cxlr' pointer. The code has been
> working because 'struct device' is the first member of 'struct
> cxl_region'. Issue found by inspection. Fix the assignment so that cxlr is
> pointing directly to the passed in parameter.
>
> Fixes: 23a22cd1c98b ("cxl/region: Allocate HPA capacity to regions")
Technically I think the essence of the bug existed in
Fixes: 779dd20cfb56 ("cxl/region: Add region creation support")
...because the region pointer was used as a device there too.
Other than that:
Reviewed-by: Ira Weiny <ira.weiny@intel.com>
> Signed-off-by: Dave Jiang <dave.jiang@intel.com>
> ---
> drivers/cxl/core/region.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
[snip]
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH] cxl: Fix unregister_region() callback parameter assignment
2023-12-14 21:25 ` Ira Weiny
@ 2023-12-14 22:27 ` Dan Williams
2023-12-14 22:39 ` Ira Weiny
0 siblings, 1 reply; 4+ messages in thread
From: Dan Williams @ 2023-12-14 22:27 UTC (permalink / raw)
To: Ira Weiny, Dave Jiang, linux-cxl
Cc: dan.j.williams, ira.weiny, vishal.l.verma, alison.schofield,
Jonathan.Cameron, dave
Ira Weiny wrote:
> Dave Jiang wrote:
> > In devm_cxl_add_region(), devm_add_action_or_reset() is called by passing
> > in unregister_region() with data ptr of 'cxlr'. However, in
> > unregister_region(), the passed in parameter is incorrectly assumed to be
> > a 'struct device' rather than the 'cxlr' pointer. The code has been
> > working because 'struct device' is the first member of 'struct
> > cxl_region'. Issue found by inspection. Fix the assignment so that cxlr is
> > pointing directly to the passed in parameter.
> >
> > Fixes: 23a22cd1c98b ("cxl/region: Allocate HPA capacity to regions")
>
> Technically I think the essence of the bug existed in
>
> Fixes: 779dd20cfb56 ("cxl/region: Add region creation support")
Agree, that's the correct Fixes: line, but I am also debating dropping
Fixes because unless the definition of 'struct cxl_region' is changed
there is no problem in practice. So a Fixes line will generate
unncessary backport thrash. I'll just change it to be mentioned as the
originator of thinko.
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH] cxl: Fix unregister_region() callback parameter assignment
2023-12-14 22:27 ` Dan Williams
@ 2023-12-14 22:39 ` Ira Weiny
0 siblings, 0 replies; 4+ messages in thread
From: Ira Weiny @ 2023-12-14 22:39 UTC (permalink / raw)
To: Dan Williams, Ira Weiny, Dave Jiang, linux-cxl
Cc: dan.j.williams, ira.weiny, vishal.l.verma, alison.schofield,
Jonathan.Cameron, dave
Dan Williams wrote:
> Ira Weiny wrote:
> > Dave Jiang wrote:
> > > In devm_cxl_add_region(), devm_add_action_or_reset() is called by passing
> > > in unregister_region() with data ptr of 'cxlr'. However, in
> > > unregister_region(), the passed in parameter is incorrectly assumed to be
> > > a 'struct device' rather than the 'cxlr' pointer. The code has been
> > > working because 'struct device' is the first member of 'struct
> > > cxl_region'. Issue found by inspection. Fix the assignment so that cxlr is
> > > pointing directly to the passed in parameter.
> > >
> > > Fixes: 23a22cd1c98b ("cxl/region: Allocate HPA capacity to regions")
> >
> > Technically I think the essence of the bug existed in
> >
> > Fixes: 779dd20cfb56 ("cxl/region: Add region creation support")
>
> Agree, that's the correct Fixes: line, but I am also debating dropping
> Fixes because unless the definition of 'struct cxl_region' is changed
> there is no problem in practice. So a Fixes line will generate
> unncessary backport thrash. I'll just change it to be mentioned as the
> originator of thinko.
Yea that makes a lot of sense.
Ira
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2023-12-14 22:39 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-12-14 19:13 [PATCH] cxl: Fix unregister_region() callback parameter assignment Dave Jiang
2023-12-14 21:25 ` Ira Weiny
2023-12-14 22:27 ` Dan Williams
2023-12-14 22:39 ` Ira Weiny
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox