Skip to content

Commit

Permalink
[PATCH] IPMI oops fix
Browse files Browse the repository at this point in the history
While doing some testing I discovered that if the BIOS on a board does not
properly setup the DMI information it leads to a panic in the IPMI code.

The panic is due to dereferencing a pointer which is not initialized.  The
pointer is initialized in port_setup() and/or mem_setup() and used in
init_one_smi() and cleanup_one_si(), however if either port_setup() or
mem_setup() return ENODEV the pointer does not get initialized.

Signed-off-by: Paolo Galtieri <pgaltieri@mvista.com>
Acked-by: Corey Minyard <cminyard@mvista.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
Paolo Galtieri authored and Linus Torvalds committed Dec 15, 2005
1 parent ebbd1bc commit 7767e12
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions drivers/char/ipmi/ipmi_si_intf.c
Expand Up @@ -2399,7 +2399,8 @@ static int init_one_smi(int intf_num, struct smi_info **smi)
new_smi->handlers->cleanup(new_smi->si_sm);
kfree(new_smi->si_sm);
}
new_smi->io_cleanup(new_smi);
if (new_smi->io_cleanup)
new_smi->io_cleanup(new_smi);

return rv;
}
Expand Down Expand Up @@ -2518,7 +2519,8 @@ static void __exit cleanup_one_si(struct smi_info *to_clean)

kfree(to_clean->si_sm);

to_clean->io_cleanup(to_clean);
if (to_clean->io_cleanup)
to_clean->io_cleanup(to_clean);
}

static __exit void cleanup_ipmi_si(void)
Expand Down

0 comments on commit 7767e12

Please sign in to comment.