On Mon, Sep 24, 2018 at 8:41 PM, Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx> wrote: > On Mon, Sep 24, 2018 at 03:55:04PM +0000, Christopher Lameter wrote: >> 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)) { > > It would not be a constant here though. > >> 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. > > The size in this particular case is being derived from a value passed > from userspace. Input core does not care about any limits on size of > memory kmalloc() can support and is perfectly happy with getting NULL > and telling userspace to go away with their silly requests by returning > -ENOMEM. > > For the record: I definitely do not want to pre-sanitize size neither in > uinput nor in input core. Christopher, Assuming that the size is large enough to fail in all allocators, is this warning still useful? How? Should we remove it?