Re: [PATCH v2 2/2] mm: kvmalloc: align kvrealloc() with krealloc()

From: Michal Hocko
Date: Tue Jul 23 2024 - 14:53:16 EST


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