On Sat, 2011-04-16 at 17:02 -0700, David Rientjes wrote: > > +void warn_alloc_failed(gfp_t gfp_mask, int order, const char *fmt, ...) > > +{ > > + va_list args; > > + unsigned int filter = SHOW_MEM_FILTER_NODES; > > + const gfp_t wait = gfp_mask & __GFP_WAIT; > > + > > "wait" is unnecessary. You didn't do "const gfp_t nowarn = gfp_mask & > __GFP_NOWARN;" for the same reason. This line is just a copy from the __alloc_pages_slowpath() one. I guess we only use it once, so I've got no problem killing it. > > + if ((gfp_mask & __GFP_NOWARN) || !__ratelimit(&nopage_rs)) > > + return; > > + > > + /* > > + * This documents exceptions given to allocations in certain > > + * contexts that are allowed to allocate outside current's set > > + * of allowed nodes. > > + */ > > + if (!(gfp_mask & __GFP_NOMEMALLOC)) > > + if (test_thread_flag(TIF_MEMDIE) || > > + (current->flags & (PF_MEMALLOC | PF_EXITING))) > > + filter &= ~SHOW_MEM_FILTER_NODES; > > + if (in_interrupt() || !wait) > > + filter &= ~SHOW_MEM_FILTER_NODES; > > + > > + if (fmt) { > > + printk(KERN_WARNING); > > + va_start(args, fmt); > > + vprintk(fmt, args); > > + va_end(args); > > + } > > + > > + printk(KERN_WARNING "%s: page allocation failure: order:%d, mode:0x%x\n", > > + current->comm, order, gfp_mask); > > pr_warning()? OK, I'll change it back. > current->comm should always be printed with get_task_comm() to avoid > racing with /proc/pid/comm. Since this function can be called potentially > deep in the stack, you may need to serialize this with a > statically-allocated buffer. This code was already in page_alloc.c. I'm simply breaking it out here trying to keep the changes down to what is needed minimally to move the code. Correcting this preexisting problem sounds like a great follow-on patch. -- Dave -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>