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 <pra...@redhat.com> Cc: Corey Minyard <miny...@acm.org> --- 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 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Openipmi-developer mailing list Openipmi-developer@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openipmi-developer