[PATCH] IPMI oops fix
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>
This commit is contained in:
parent
ebbd1bce79
commit
7767e126ca
|
@ -2399,7 +2399,8 @@ static int init_one_smi(int intf_num, struct smi_info **smi)
|
||||||
new_smi->handlers->cleanup(new_smi->si_sm);
|
new_smi->handlers->cleanup(new_smi->si_sm);
|
||||||
kfree(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;
|
return rv;
|
||||||
}
|
}
|
||||||
|
@ -2518,7 +2519,8 @@ static void __exit cleanup_one_si(struct smi_info *to_clean)
|
||||||
|
|
||||||
kfree(to_clean->si_sm);
|
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)
|
static __exit void cleanup_ipmi_si(void)
|
||||||
|
|
Loading…
Reference in a new issue