Thread (1 message) 1 message, 1 author, 2021-07-01

Re: [PATCH] of: of_reserved_mem: match memblock_free with memblock_reserve

From: Rob Herring <robh+dt@kernel.org>
Date: 2021-07-01 14:51:52
Also in: lkml

On Thu, Jul 1, 2021 at 8:10 AM 권오훈 [off-list ref] 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).
quoted hunk
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 <redacted>

---

 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




Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help