* Re: [PATCH] of: of_reserved_mem: match memblock_free with memblock_reserve [not found] ` <20210701141049epcms1p774955cc32210584be5aca8f1b3126e9c@epcms1p7> @ 2021-07-01 14:51 ` Rob Herring 0 siblings, 0 replies; 2+ messages in thread From: Rob Herring @ 2021-07-01 14:51 UTC (permalink / raw) To: ohoono.kwon; +Cc: frowand.list, lee.jones, ohkwon1043, devicetree, linux-kernel On Thu, Jul 1, 2021 at 8:10 AM 권오훈 <ohoono.kwon@samsung.com> 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@samsung.com> > > --- > > 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 > > > > > > ^ permalink raw reply [flat|nested] 2+ messages in thread
[parent not found: <CGME20210701140328epcms1p85149318b6c18fa18b3c7c8e966c14db0@epcms1p8>]
* [PATCH] of: of_reserved_mem: match memblock_free with memblock_reserve [not found] <CGME20210701140328epcms1p85149318b6c18fa18b3c7c8e966c14db0@epcms1p8> @ 2021-07-01 14:11 ` 권오훈 0 siblings, 0 replies; 2+ messages in thread From: 권오훈 @ 2021-07-01 14:11 UTC (permalink / raw) To: robh+dt, frowand.list Cc: lee.jones, 권오훈, ohkwon1043, devicetree, linux-kernel 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")' 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@samsung.com> --- 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 ^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2021-07-01 14:51 UTC | newest] Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <CGME20210701140328epcms1p85149318b6c18fa18b3c7c8e966c14db0@epcms1p7> [not found] ` <20210701141049epcms1p774955cc32210584be5aca8f1b3126e9c@epcms1p7> 2021-07-01 14:51 ` [PATCH] of: of_reserved_mem: match memblock_free with memblock_reserve Rob Herring [not found] <CGME20210701140328epcms1p85149318b6c18fa18b3c7c8e966c14db0@epcms1p8> 2021-07-01 14:11 ` 권오훈
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).