On 03/31/2014 09:04 AM, Andi Kleen wrote: >> do_initcall_level(level); >> + >> + list_for_each_safe(tmp, next, &blacklisted_initcalls) { >> + entry = list_entry(tmp, struct blacklist_entry, next); >> + free_bootmem(entry->buf, strlen(entry->buf)); >> + free_bootmem(entry, sizeof(*entry)); > > Does that really work? At this point the bootmem allocator should > be already finished, so no memory will be freed. Oh, geez ... that's a good point. I completely missed that. > > For this case it's probably ok to leak it. Okay ... maybe that's an option. > > Alternatively you could use static arrays and storing pointer/len. > Yeah, I was thinking about the pros-cons of doing static vs. dynamic. I was planning on doing an array of 5 but kept falling into the trap of "how much is too much or too little?". Does anyone object to a static array? If not I'll bang out a static version for [v3] tomorrow ... P. > -Andi > -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html