On Tue 23-07-24 15:33:32, Danilo Krummrich wrote: > On Tue, Jul 23, 2024 at 02:12:23PM +0200, Michal Hocko wrote: > > On Tue 23-07-24 13:55:48, Danilo Krummrich wrote: [...] > > void *kvrealloc_noprof(const void *p, size_t size, gfp_t flags) > > { > > void *newp; > > > > if (!size && p) { > > kvfree(p); > > return NULL; > > } > > > > if (!is_vmalloc_addr(p)) > > newp = krealloc_noprof(p, size, kmalloc_gfp_adjust(flags, size)); > > > > if (newp) > > return newp; > > > > return vrealloc_noprof(p, size, flags); > > } > > EXPORT_SYMBOL(kvrealloc_noprof); > > This looks weird. The fact that you're passing p to vrealloc_noprof() if > krealloc_noprof() fails, implies that vrealloc_noprof() must be able to deal > with pointers to kmalloc'd memory. You are right I have oversimplified this. I was hoping to follow kvmalloc model with a clear fallback and that should be possible but it would require more changes. Scratch that. -- Michal Hocko SUSE Labs