[PATCH] mtd: hyperbus: hbmc-am654: fix an OF node reference leak

Joe Hattori joe at pf.is.s.u-tokyo.ac.jp
Fri Dec 6 05:39:55 PST 2024


Hi Miquel,

Thank you for the review.

On 12/6/24 22:29, Miquel Raynal wrote:
> Hi Joe,
> 
> On 06/12/2024 at 20:47:40 +09, Joe Hattori <joe at pf.is.s.u-tokyo.ac.jp> wrote:
> 
>> In am654_hbmc_platform_driver, .remove() and the error path of .probe()
>> do not decrement the refcount of an OF node obtained by
>>    of_get_next_child(). Fix this by adding of_node_put() calls.
>>
>> Fixes: aca31ce96814 ("mtd: hyperbus: hbmc-am654: Fix direct mapping setup flash access")
>> Signed-off-by: Joe Hattori <joe at pf.is.s.u-tokyo.ac.jp>
>> ---
>>   drivers/mtd/hyperbus/hbmc-am654.c | 11 +++++++----
>>   1 file changed, 7 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/mtd/hyperbus/hbmc-am654.c b/drivers/mtd/hyperbus/hbmc-am654.c
>> index 217f4e69233f..3e206bb34287 100644
>> --- a/drivers/mtd/hyperbus/hbmc-am654.c
>> +++ b/drivers/mtd/hyperbus/hbmc-am654.c
>> @@ -174,18 +174,18 @@ static int am654_hbmc_probe(struct platform_device *pdev)
>>   	priv->hbdev.np = of_get_next_child(np, NULL);
>>   	ret = of_address_to_resource(priv->hbdev.np, 0, &res);
>>   	if (ret)
>> -		return ret;
>> +		goto put_node;
>>   
>>   	if (of_property_read_bool(dev->of_node, "mux-controls")) {
>>   		struct mux_control *control = devm_mux_control_get(dev, NULL);
>>   
>>   		if (IS_ERR(control))
>> -			return PTR_ERR(control);
>> +			goto put_node;
>>   
>>   		ret = mux_control_select(control, 1);
>>   		if (ret) {
>>   			dev_err(dev, "Failed to select HBMC mux\n");
>> -			return ret;
>> +			goto put_node;
>>   		}
>>   		priv->mux_ctrl = control;
>>   	}
>> @@ -193,7 +193,7 @@ static int am654_hbmc_probe(struct platform_device *pdev)
>>   	priv->hbdev.map.size = resource_size(&res);
>>   	priv->hbdev.map.virt = devm_ioremap_resource(dev, &res);
>>   	if (IS_ERR(priv->hbdev.map.virt))
>> -		return PTR_ERR(priv->hbdev.map.virt);
>> +		goto disable_mux;
> 
> This error path will return ret, whereas it should return
> PTR_ERR(priv->hbdev.map.virt).
> 
Yes, absolutely right. Fixed in the V2 patch.

Best,
Joe



More information about the linux-mtd mailing list