Messages in this thread Patch in this message | | | Date | Fri, 19 Jul 2013 01:27:18 +0200 | From | Borislav Petkov <> | Subject | Re: BUG: key ffff880c1148c478 not in .data! (V3.10.0) |
| |
On Thu, Jul 18, 2013 at 04:51:48PM +0000, Luck, Tony wrote: > + BUG_ON(mci->mc_idx >= EDAC_MAX_MCS); > > Do we have to "BUG_ON()" here? Couldn't we be gentler with something like: > > if (mci->mc_idx >= EDAC_MAX_MCS) { > printk_once(KERN_WARNING "Too many memory controllers\n"); > return; /* probably need to make sure caller copes with this ... so more stuff there */
Yeah, we can do something like this:
diff --git a/drivers/edac/edac_mc.c b/drivers/edac/edac_mc.c index 429e971e02d7..c55ad285c285 100644 --- a/drivers/edac/edac_mc.c +++ b/drivers/edac/edac_mc.c @@ -725,6 +725,11 @@ int edac_mc_add_mc(struct mem_ctl_info *mci) int ret = -EINVAL; edac_dbg(0, "\n"); + if (mci->mc_idx >= EDAC_MAX_MCS) { + pr_warn_once("Too many memory controllers: %d\n", mci->mc_idx); + return ret; + } + #ifdef CONFIG_EDAC_DEBUG if (edac_debug_level >= 3) edac_mc_dump_mci(mci); -- right near the beginning of the function so that we can save us the unwinding.
-- Regards/Gruss, Boris.
Sent from a fat crate under my desk. Formatting is fine. --
| |