Re: [PATCH 2/2] cxl/region: Fix missing put_device(region_dev)

From: Zhijian Li (Fujitsu)
Date: Mon Apr 29 2024 - 06:27:46 EST




On 29/04/2024 18:17, Dan Carpenter wrote:
> On Mon, Apr 29, 2024 at 09:31:54AM +0800, Li Zhijian wrote:
>>> mutex_lock(&cxlrd->range_lock);
>>> region_dev = device_find_child(&cxlrd->cxlsd.cxld.dev, hpa,
>>> match_region_by_range);
>>> if (!region_dev)
>>> cxlr = construct_region(cxlrd, cxled);
>>> else
>>> cxlr = to_cxl_region(region_dev);
>>> mutex_unlock(&cxlrd->range_lock);
>>>
>>> rc = PTR_ERR_OR_ZERO(cxlr);
>>> if (rc)
>>> goto out;
>>>
>>> if (!region_dev)
>>> region_dev = &cxlr->dev;
>>
>> When to_cxl_region(region_dev) fails,
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> to_cxl_region() will return NULL if "region_dev" is not a region device.
>
> 2215 static struct cxl_region *to_cxl_region(struct device *dev)
> 2216 {
> 2217 if (dev_WARN_ONCE(dev, dev->type != &cxl_region_type,
> 2218 "not a cxl_region device\n"))
> 2219 return NULL;
> 2220
> 2221 return container_of(dev, struct cxl_region, dev);
> 2222 }
>
> It won't fail.
>
> If it does fail, we're already in bad shape and it's not worth worrying
> about resource leaks at that point.
>

Sounds good to me,

Thanks
Zhijian


> regards,
> dan carpenter
>
>