All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] objtool: prevent memory leak in error paths
@ 2021-04-13 20:45 Muhammad Usama Anjum
  2021-04-14  7:21 ` Peter Zijlstra
  2021-04-14  8:47 ` Dan Carpenter
  0 siblings, 2 replies; 5+ messages in thread
From: Muhammad Usama Anjum @ 2021-04-13 20:45 UTC (permalink / raw)
  To: Josh Poimboeuf, Peter Zijlstra, Ingo Molnar, Miroslav Benes,
	Borislav Petkov, open list
  Cc: musamaanjum, kernel-janitors, dan.carpenter, colin.king

Memory allocated by sym and sym->name isn't being freed if some error
occurs in elf_create_undef_symbol(). Free the sym and sym->name if error
is detected before returning NULL.

Addresses-Coverity: ("Prevent memory leak")
Fixes: 2f2f7e47f052 ("objtool: Add elf_create_undef_symbol()")
Signed-off-by: Muhammad Usama Anjum <musamaanjum@gmail.com>
---
Only build has been tested.

tools/objtool/elf.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/tools/objtool/elf.c b/tools/objtool/elf.c
index d08f5f3670f8..17ee265a6c6b 100644
--- a/tools/objtool/elf.c
+++ b/tools/objtool/elf.c
@@ -733,7 +733,7 @@ struct symbol *elf_create_undef_symbol(struct elf *elf, const char *name)
 
 	sym->sym.st_name = elf_add_string(elf, NULL, sym->name);
 	if (sym->sym.st_name == -1)
-		return NULL;
+		goto err;
 
 	sym->sym.st_info = GELF_ST_INFO(STB_GLOBAL, STT_NOTYPE);
 	// st_other 0
@@ -744,19 +744,19 @@ struct symbol *elf_create_undef_symbol(struct elf *elf, const char *name)
 	symtab = find_section_by_name(elf, ".symtab");
 	if (!symtab) {
 		WARN("can't find .symtab");
-		return NULL;
+		goto err;
 	}
 
 	s = elf_getscn(elf->elf, symtab->idx);
 	if (!s) {
 		WARN_ELF("elf_getscn");
-		return NULL;
+		goto err;
 	}
 
 	data = elf_newdata(s);
 	if (!data) {
 		WARN_ELF("elf_newdata");
-		return NULL;
+		goto err;
 	}
 
 	data->d_buf = &sym->sym;
@@ -773,6 +773,10 @@ struct symbol *elf_create_undef_symbol(struct elf *elf, const char *name)
 	elf_add_symbol(elf, sym);
 
 	return sym;
+err:
+	free(sym->name);
+	free(sym);
+	return NULL;
 }
 
 struct section *elf_create_section(struct elf *elf, const char *name,
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] objtool: prevent memory leak in error paths
  2021-04-13 20:45 [PATCH] objtool: prevent memory leak in error paths Muhammad Usama Anjum
@ 2021-04-14  7:21 ` Peter Zijlstra
  2021-04-14  8:47 ` Dan Carpenter
  1 sibling, 0 replies; 5+ messages in thread
From: Peter Zijlstra @ 2021-04-14  7:21 UTC (permalink / raw)
  To: Muhammad Usama Anjum
  Cc: Josh Poimboeuf, Ingo Molnar, Miroslav Benes, Borislav Petkov,
	open list, kernel-janitors, dan.carpenter, colin.king

On Wed, Apr 14, 2021 at 01:45:11AM +0500, Muhammad Usama Anjum wrote:
> Memory allocated by sym and sym->name isn't being freed if some error
> occurs in elf_create_undef_symbol(). Free the sym and sym->name if error
> is detected before returning NULL.
> 
> Addresses-Coverity: ("Prevent memory leak")

-EDONTCARE, objtool is single-shot by design, on error we quit, which
frees all memory. Please exclude all of objtool from this class of
problems in your Coverity thing.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] objtool: prevent memory leak in error paths
  2021-04-13 20:45 [PATCH] objtool: prevent memory leak in error paths Muhammad Usama Anjum
  2021-04-14  7:21 ` Peter Zijlstra
@ 2021-04-14  8:47 ` Dan Carpenter
  2021-04-15  7:24   ` Peter Zijlstra
  1 sibling, 1 reply; 5+ messages in thread
From: Dan Carpenter @ 2021-04-14  8:47 UTC (permalink / raw)
  To: Muhammad Usama Anjum
  Cc: Josh Poimboeuf, Peter Zijlstra, Ingo Molnar, Miroslav Benes,
	Borislav Petkov, open list, kernel-janitors, colin.king

On Wed, Apr 14, 2021 at 01:45:11AM +0500, Muhammad Usama Anjum wrote:
> Memory allocated by sym and sym->name isn't being freed if some error
> occurs in elf_create_undef_symbol(). Free the sym and sym->name if error
> is detected before returning NULL.
> 
> Addresses-Coverity: ("Prevent memory leak")
> Fixes: 2f2f7e47f052 ("objtool: Add elf_create_undef_symbol()")
> Signed-off-by: Muhammad Usama Anjum <musamaanjum@gmail.com>
> ---
> Only build has been tested.
> 

Just ignore leaks from the tools/ directory.  These things run and then
exit and all the memory is freed.  #OldSchoolGarbageCollector

regards,
dan carpenter


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] objtool: prevent memory leak in error paths
  2021-04-14  8:47 ` Dan Carpenter
@ 2021-04-15  7:24   ` Peter Zijlstra
  2021-04-19 17:15     ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 5+ messages in thread
From: Peter Zijlstra @ 2021-04-15  7:24 UTC (permalink / raw)
  To: Dan Carpenter
  Cc: Muhammad Usama Anjum, Josh Poimboeuf, Ingo Molnar,
	Miroslav Benes, Borislav Petkov, open list, kernel-janitors,
	colin.king, Arnaldo Carvalho de Melo

On Wed, Apr 14, 2021 at 11:47:09AM +0300, Dan Carpenter wrote:
> On Wed, Apr 14, 2021 at 01:45:11AM +0500, Muhammad Usama Anjum wrote:
> > Memory allocated by sym and sym->name isn't being freed if some error
> > occurs in elf_create_undef_symbol(). Free the sym and sym->name if error
> > is detected before returning NULL.
> > 
> > Addresses-Coverity: ("Prevent memory leak")
> > Fixes: 2f2f7e47f052 ("objtool: Add elf_create_undef_symbol()")
> > Signed-off-by: Muhammad Usama Anjum <musamaanjum@gmail.com>
> > ---
> > Only build has been tested.
> > 
> 
> Just ignore leaks from the tools/ directory.  These things run and then
> exit and all the memory is freed.  #OldSchoolGarbageCollector

Mostly true; but I suspect tools/perf might care, it has some longer
running things in.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] objtool: prevent memory leak in error paths
  2021-04-15  7:24   ` Peter Zijlstra
@ 2021-04-19 17:15     ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 5+ messages in thread
From: Arnaldo Carvalho de Melo @ 2021-04-19 17:15 UTC (permalink / raw)
  To: Peter Zijlstra
  Cc: Dan Carpenter, Muhammad Usama Anjum, Josh Poimboeuf, Ingo Molnar,
	Miroslav Benes, Borislav Petkov, open list, kernel-janitors,
	colin.king

Em Thu, Apr 15, 2021 at 09:24:41AM +0200, Peter Zijlstra escreveu:
> On Wed, Apr 14, 2021 at 11:47:09AM +0300, Dan Carpenter wrote:
> > On Wed, Apr 14, 2021 at 01:45:11AM +0500, Muhammad Usama Anjum wrote:
> > > Memory allocated by sym and sym->name isn't being freed if some error
> > > occurs in elf_create_undef_symbol(). Free the sym and sym->name if error
> > > is detected before returning NULL.
> > > 
> > > Addresses-Coverity: ("Prevent memory leak")
> > > Fixes: 2f2f7e47f052 ("objtool: Add elf_create_undef_symbol()")
> > > Signed-off-by: Muhammad Usama Anjum <musamaanjum@gmail.com>
> > > ---
> > > Only build has been tested.
> > > 
> > 
> > Just ignore leaks from the tools/ directory.  These things run and then
> > exit and all the memory is freed.  #OldSchoolGarbageCollector
> 
> Mostly true; but I suspect tools/perf might care, it has some longer
> running things in.

Yes, and now we have 'perf daemon' that is long running.

- Arnaldo

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-04-19 17:15 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-13 20:45 [PATCH] objtool: prevent memory leak in error paths Muhammad Usama Anjum
2021-04-14  7:21 ` Peter Zijlstra
2021-04-14  8:47 ` Dan Carpenter
2021-04-15  7:24   ` Peter Zijlstra
2021-04-19 17:15     ` Arnaldo Carvalho de Melo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.