[Openipmi-developer] [PATCH] ipmi: Allocate ipmi_dmi_info only on success
Brought to you by:
cminyard
|
From: Prarit B. <pr...@re...> - 2018-02-15 23:26:31
|
The ipmi_dmi_info struct is added on IPMI device initialization failure
resulting in incorrect data in the ipmi_dmi_infos list.
Drop the "out of memory warning" and only add the ipmi_dmi_info struct on
IPMI device initialization on success.
Signed-off-by: Prarit Bhargava <pr...@re...>
Cc: Corey Minyard <mi...@ac...>
---
drivers/char/ipmi/ipmi_dmi.c | 22 ++++++++++------------
1 file changed, 10 insertions(+), 12 deletions(-)
diff --git a/drivers/char/ipmi/ipmi_dmi.c b/drivers/char/ipmi/ipmi_dmi.c
index c5112b17d7ea..ccd9a85ba2c1 100644
--- a/drivers/char/ipmi/ipmi_dmi.c
+++ b/drivers/char/ipmi/ipmi_dmi.c
@@ -89,18 +89,6 @@ static void __init dmi_add_platform_ipmi(unsigned long base_addr,
set_prop_entry(p[pidx++], "slave-addr", u8, slave_addr);
set_prop_entry(p[pidx++], "addr-source", u8, SI_SMBIOS);
- info = kmalloc(sizeof(*info), GFP_KERNEL);
- if (!info) {
- pr_warn("ipmi:dmi: Could not allocate dmi info\n");
- } else {
- info->si_type = si_type;
- info->flags = flags;
- info->addr = base_addr;
- info->slave_addr = slave_addr;
- info->next = ipmi_dmi_infos;
- ipmi_dmi_infos = info;
- }
-
pdev = platform_device_alloc(name, ipmi_dmi_nr);
if (!pdev) {
pr_err("ipmi:dmi: Error allocation IPMI platform device\n");
@@ -168,6 +156,16 @@ static void __init dmi_add_platform_ipmi(unsigned long base_addr,
goto err;
}
+ info = kmalloc(sizeof(*info), GFP_KERNEL);
+ if (info) {
+ info->si_type = si_type;
+ info->flags = flags;
+ info->addr = base_addr;
+ info->slave_addr = slave_addr;
+ info->next = ipmi_dmi_infos;
+ ipmi_dmi_infos = info;
+ }
+
ipmi_dmi_nr++;
return;
--
2.15.0.rc0.39.g2f0e14e64
|