On Thu, Jul 1, 2021 at 8:10 AM 권오훈 <ohoono.kwon@xxxxxxxxxxx> wrote: > > When __reserved_mem_init_node called from fdt_init_reserved_mem fails, > > we try to undo __reserved_mem_alloc_size to prevent memory leak. > > 'commit d0b8ed47e83a ("of: reserved_mem: fix reserve memory leak")' Your patch is corrupted and not plain text. In any case, I believe this issue has already been fixed. Check the latest kernel tree(s). > > Meanwhile, __reserved_mem_alloc_size calls > > early_init_dt_alloc_reserved_memory_arch to allocate memory, > > which calls > > 1) memblock_remove when rmem is declared nomap, > > 2) memblock_reserve, otherwise. > > > > static int __init early_init_dt_alloc_reserved_memory_arch( > > ... > > if (nomap) > > return memblock_remove(base, size); > > > > return memblock_reserve(base, size); > > } > > > > Therefore the proper undo-logic should be as follows: > > 1) memblock_add when rmem is declared nomap, > > 2) memblock_free, otherwise. > > > > Match the undo functions for readability. > > > > Signed-off-by: Ohhoon Kwon <ohoono.kwon@xxxxxxxxxxx> > > --- > > drivers/of/of_reserved_mem.c | 3 ++- > > 1 file changed, 2 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/of/of_reserved_mem.c b/drivers/of/of_reserved_mem.c > > index 15e2417974d6..2279e1b55d1d 100644 > > --- a/drivers/of/of_reserved_mem.c > > +++ b/drivers/of/of_reserved_mem.c > > @@ -273,9 +273,10 @@ void __init fdt_init_reserved_mem(void) > > if (err != 0 && err != -ENOENT) { > > pr_info("node %s compatible matching fail\n", > > rmem->name); > > - memblock_free(rmem->base, rmem->size); > > if (nomap) > > memblock_add(rmem->base, rmem->size); > > + else > > + memblock_free(rmem->base, rmem->size); > > } > > } > > } > > -- > > 2.17.1 > > > > > >