On Mon, Dec 05, 2016 at 06:23:26AM +0100, Michal Hocko wrote: > > > > > > ret = kzalloc(size, gfp_mask); > > > if (ret) > > > return ret; > > > return vzalloc(size); > > > > > > > > I also do not like memcg_alloc helper name. It suggests we are > > > allocating a memcg while it is used for cache arrays and slab LRUS. > > > Anyway this pattern is quite widespread in the kernel so I would simply > > > suggest adding kvmalloc function instead. > > > > Agreed, it would be nice to have a generic call. > > I would suggest an impl. like this: > > > > void *kvmalloc(size_t size) > > gfp_t gfp_mask should be a parameter as this should be a generic helper. > > > { > > gfp_t gfp_mask = GFP_KERNEL; > > > > void *ret; > > > > if (size > PAGE_SIZE) > > gfp_mask |= __GFP_NORETRY | __GFP_NOWARN; > > > > > > if (size <= (PAGE_SIZE << PAGE_ALLOC_COSTLY_ORDER)) { > > ret = kzalloc(size, gfp_mask); > > if (ret) > > return ret; > > } > > No, please just do as suggested above. Tweak the gfp_mask for higher > order requests and do kmalloc first with vmalloc as a fallback. You may simply use the slightly different and open-coded variant within fs/seq_file.c:seq_buf_alloc(). That one got a lot of testing in the meantime... -- 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>