[PATCH] ipmi: Fix leak in __ipmi_bmc_register

Michail Tatas posted 1 patch 1 month, 3 weeks ago
drivers/char/ipmi/ipmi_msghandler.c | 1 +
1 file changed, 1 insertion(+)
[PATCH] ipmi: Fix leak in __ipmi_bmc_register
Posted by Michail Tatas 1 month, 3 weeks ago
In case that ida_alloc(&ipmi_bmc_ida,...) succeeds and then
platform_device_register() fails, ipmi_bmc_ida is leaked.
Fix by freeing the error path

Signed-off-by: Michail Tatas <michail.tatas@gmail.com>
---
 drivers/char/ipmi/ipmi_msghandler.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/char/ipmi/ipmi_msghandler.c b/drivers/char/ipmi/ipmi_msghandler.c
index 6ff9a15cced8..7634dff99f41 100644
--- a/drivers/char/ipmi/ipmi_msghandler.c
+++ b/drivers/char/ipmi/ipmi_msghandler.c
@@ -3301,6 +3301,7 @@ static int __ipmi_bmc_register(struct ipmi_smi *intf,
 	list_del(&intf->bmc_link);
 	mutex_unlock(&bmc->dyn_mutex);
 	intf->bmc = &intf->tmp_bmc;
+	ida_free(&ipmi_bmc_ida, bmc->pdev.id);
 	put_device(&bmc->pdev.dev);
 	goto out;
 }
-- 
2.43.0
Re: [PATCH] ipmi: Fix leak in __ipmi_bmc_register
Posted by Corey Minyard 1 month, 3 weeks ago
On Fri, Aug 07, 2026 at 01:30:20AM +0300, Michail Tatas wrote:
> In case that ida_alloc(&ipmi_bmc_ida,...) succeeds and then
> platform_device_register() fails, ipmi_bmc_ida is leaked.
> Fix by freeing the error path

You are correct, added to my next tree.  Thank you.

-corey

> 
> Signed-off-by: Michail Tatas <michail.tatas@gmail.com>
> ---
>  drivers/char/ipmi/ipmi_msghandler.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/char/ipmi/ipmi_msghandler.c b/drivers/char/ipmi/ipmi_msghandler.c
> index 6ff9a15cced8..7634dff99f41 100644
> --- a/drivers/char/ipmi/ipmi_msghandler.c
> +++ b/drivers/char/ipmi/ipmi_msghandler.c
> @@ -3301,6 +3301,7 @@ static int __ipmi_bmc_register(struct ipmi_smi *intf,
>  	list_del(&intf->bmc_link);
>  	mutex_unlock(&bmc->dyn_mutex);
>  	intf->bmc = &intf->tmp_bmc;
> +	ida_free(&ipmi_bmc_ida, bmc->pdev.id);
>  	put_device(&bmc->pdev.dev);
>  	goto out;
>  }
> -- 
> 2.43.0
>