Message ID | 1563173924-47479-1-git-send-email-zhangliguang@linux.alibaba.com (mailing list archive) |
---|---|
State | Changes Requested, archived |
Headers | show |
Series | [v4] ACPI / APEI: release resources if gen_pool_add fails | expand |
Hi Liguang, On 15/07/2019 07:58, luanshi wrote: > To avoid memory leaks, destroy ghes_estatus_pool and release memory > allocated via vmalloc() on errors in ghes_estatus_pool_init(). > > Signed-off-by: Liguang Zhang <zhangliguang@linux.alibaba.com> > --- Playing spot-the-difference with [v3], you've moved an empty line. Please include a change log in this space below the '---' tearoff. This helps reviewers know what you changed between versions, and git knows not to add stuff in here to the log. This is still: Reviewed-by: James Morse <james.morse@arm.com> Thanks, James [v3] https://lore.kernel.org/linux-acpi/1561258201-26917-1-git-send-email-zhangliguang@linux.alibaba.com/ > drivers/acpi/apei/ghes.c | 17 ++++++++++++++--- > 1 file changed, 14 insertions(+), 3 deletions(-) > [...]
Hi James, 在 2019/7/25 20:46, James Morse 写道: > Hi Liguang, > > On 15/07/2019 07:58, luanshi wrote: >> To avoid memory leaks, destroy ghes_estatus_pool and release memory >> allocated via vmalloc() on errors in ghes_estatus_pool_init(). >> >> Signed-off-by: Liguang Zhang <zhangliguang@linux.alibaba.com> >> --- > Playing spot-the-difference with [v3], you've moved an empty line. > > Please include a change log in this space below the '---' tearoff. This helps reviewers > know what you changed between versions, and git knows not to add stuff in here to the log. > > This is still: > Reviewed-by: James Morse <james.morse@arm.com> Thanks for your review. Because your reviewed-by was given ealier, and the code is reconstructed, so I remove the reviewed-by. I will send v5 by your suggestions. Thanks, Liguang > > > Thanks, > > James > > [v3] > https://lore.kernel.org/linux-acpi/1561258201-26917-1-git-send-email-zhangliguang@linux.alibaba.com/ > > >> drivers/acpi/apei/ghes.c | 17 ++++++++++++++--- >> 1 file changed, 14 insertions(+), 3 deletions(-) >> > [...]
Hi Liguang, On 26/07/2019 10:29, 乱石 wrote: > 在 2019/7/25 20:46, James Morse 写道: >> On 15/07/2019 07:58, luanshi wrote: >>> To avoid memory leaks, destroy ghes_estatus_pool and release memory >>> allocated via vmalloc() on errors in ghes_estatus_pool_init(). >>> >>> Signed-off-by: Liguang Zhang <zhangliguang@linux.alibaba.com> >>> --- >> Playing spot-the-difference with [v3], you've moved an empty line. >> >> Please include a change log in this space below the '---' tearoff. This helps reviewers >> know what you changed between versions, and git knows not to add stuff in here to the log. >> >> This is still: >> Reviewed-by: James Morse <james.morse@arm.com> > > Thanks for your review. Because your reviewed-by was given ealier, and the code is > reconstructed, > > so I remove the reviewed-by. I will send v5 by your suggestions. There is no need to post a new version just to pick up the tags. Having a versioned changelog on your future work makes it easier for reviewers to know what changed between versions. Thanks, James
diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c index a66e00f..6d42ae1 100644 --- a/drivers/acpi/apei/ghes.c +++ b/drivers/acpi/apei/ghes.c @@ -153,10 +153,11 @@ static void ghes_unmap(void __iomem *vaddr, enum fixed_addresses fixmap_idx) int ghes_estatus_pool_init(int num_ghes) { unsigned long addr, len; + int rc = 0; ghes_estatus_pool = gen_pool_create(GHES_ESTATUS_POOL_MIN_ALLOC_ORDER, -1); if (!ghes_estatus_pool) - return -ENOMEM; + goto nomem; len = GHES_ESTATUS_CACHE_AVG_SIZE * GHES_ESTATUS_CACHE_ALLOCED_MAX; len += (num_ghes * GHES_ESOURCE_PREALLOC_MAX_SIZE); @@ -164,7 +165,7 @@ int ghes_estatus_pool_init(int num_ghes) ghes_estatus_pool_size_request = PAGE_ALIGN(len); addr = (unsigned long)vmalloc(PAGE_ALIGN(len)); if (!addr) - return -ENOMEM; + goto pool_destroy; /* * New allocation must be visible in all pgd before it can be found by @@ -172,7 +173,17 @@ int ghes_estatus_pool_init(int num_ghes) */ vmalloc_sync_all(); - return gen_pool_add(ghes_estatus_pool, addr, PAGE_ALIGN(len), -1); + rc = gen_pool_add(ghes_estatus_pool, addr, PAGE_ALIGN(len), -1); + if (rc) + goto pool_destroy; + return 0; + +pool_destroy: + gen_pool_destroy(ghes_estatus_pool); + if (addr) + vfree((void *)addr); +nomem: + return -ENOMEM; } static int map_gen_v2(struct ghes *ghes)
To avoid memory leaks, destroy ghes_estatus_pool and release memory allocated via vmalloc() on errors in ghes_estatus_pool_init(). Signed-off-by: Liguang Zhang <zhangliguang@linux.alibaba.com> --- drivers/acpi/apei/ghes.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-)