Messages in this thread | | | Date | Mon, 24 Apr 2006 15:03:14 -0700 | From | Andrew Morton <> | Subject | Re: Linux 2.6.17-rc2 - notifier chain problem? |
| |
Chandra Seetharaman <sekharan@us.ibm.com> wrote: > > Thanks for the steps. With that i was able to reproduce the problem and > i found the bug. > > While i go ahead and generate the patch, i wanted to hear if my > conclusion is correct. > > The problem is due to the fact that most notifier registrations > incorrectly use __devinitdata to define the callback structure, as in: > > static struct notifier_block __devinitdata hrtimers_nb = { > .notifier_call = hrtimer_cpu_notify, > }; > > devinitdata'd data is not _expected to be available_ after the > initialization(unless CONFIG_HOTPLUG is defined). > > I do not know how it was working until now :), anybody has a theory that > can explain it (or my conclusion is wrong) ?
That sounds right. There are several __devinitdata notifier_blocks in the tree - please be sure to check them all.
btw, it'd be pretty trivial to add runtime checking for this sort of thing:
int addr_in_init_section(void *addr) { return addr >= __init_begin && addr < __init_end; }
(x86-specific) (need to add __init_end to vmlinux.lds.S)
then we could use that to check various things in various places... - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |