On Mon, 24 Sep 2018, Dmitry Vyukov wrote: > On Mon, Sep 24, 2018 at 5:08 PM, Christopher Lameter <cl@xxxxxxxxx> wrote: > > On Sun, 23 Sep 2018, Dmitry Vyukov wrote: > > > >> What was the motivation behind that WARNING about large allocations in > >> kmalloc? Why do we want to know about them? Is the general policy that > >> kmalloc calls with potentially large size requests need to use NOWARN? > >> If this WARNING still considered useful? Or we should change it to > >> pr_err? > > > > In general large allocs should be satisfied by the page allocator. The > > slab allocators are used for allocating and managing small objects. The > > page allocator has mechanisms to deal with large objects (compound pages, > > multiple page sized allocs etc). > > I am asking more about the status of this warning. If it fires in > input_mt_init_slots(), does it mean that input_mt_init_slots() needs > to be fixed? If not, then we need to change this warning to something > else. Hmmm.. kmalloc falls back to the page allocator already? See static __always_inline void *kmalloc(size_t size, gfp_t flags) { if (__builtin_constant_p(size)) { if (size > KMALLOC_MAX_CACHE_SIZE) return kmalloc_large(size, flags); Note that this uses KMALLOC_MAX_CACHE_SIZE which should be smaller than KMALLOC_MAX_SIZE. How large is the allocation? AFACIT nRequests larger than KMALLOC_MAX_SIZE are larger than the maximum allowed by the page allocator. Thus the warning and the NULL return.