On Fri, Jul 31, 2015 at 08:57:35AM -0500, Christoph Lameter wrote: > On Fri, 31 Jul 2015, Joonsoo Kim wrote: > > > I don't think that this fix is right. > > Just "kmalloc_size(INDEX_NODE) * 2" looks insane because it means 192 * 2 > > = 384 on his platform. Why we need to check size is larger than 384? > > Its an arbitrary boundary. Making it large ensures that the smaller caches > stay operational and do not fall back to page sized allocations. If it is an arbitrary boundary, it would be better to use static value such as "256" rather than kmalloc_size(INDEX_NODE) * 2. Value of kmalloc_size(INDEX_NODE) * 2 can be different in some archs and it is difficult to manage such variation. It would cause this kinds of bug again. I recommand following change. How about it? - if (size >= kmalloc_size(INDEX_NODE + 1) + if (!slab_early_init && + size >= kmalloc_size(INDEX_NODE) && + size >= 256 Thanks. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>