[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