2020-06-12 11:58:46

by Tobias Klauser

[permalink] [raw]
Subject: [PATCH] objtool: Free memory in error case in special_get_alts

Avoid a memory leak in case get_alt_entry returns an error.

Signed-off-by: Tobias Klauser <[email protected]>
---
tools/objtool/special.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/tools/objtool/special.c b/tools/objtool/special.c
index e74e0189de22..f6f7dee1ba77 100644
--- a/tools/objtool/special.c
+++ b/tools/objtool/special.c
@@ -188,8 +188,10 @@ int special_get_alts(struct elf *elf, struct list_head *alts)
memset(alt, 0, sizeof(*alt));

ret = get_alt_entry(elf, entry, sec, idx, alt);
- if (ret)
+ if (ret) {
+ free(alt);
return ret;
+ }

list_add_tail(&alt->list, alts);
}
--
2.27.0


2020-06-15 10:43:30

by Miroslav Benes

[permalink] [raw]
Subject: Re: [PATCH] objtool: Free memory in error case in special_get_alts

Hi,

On Fri, 12 Jun 2020, Tobias Klauser wrote:

> Avoid a memory leak in case get_alt_entry returns an error.

yes, this is not the only one, but I doubt we want to spend time on that.
The process is about to exit anyway.

Miroslav

> Signed-off-by: Tobias Klauser <[email protected]>
> ---
> tools/objtool/special.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/tools/objtool/special.c b/tools/objtool/special.c
> index e74e0189de22..f6f7dee1ba77 100644
> --- a/tools/objtool/special.c
> +++ b/tools/objtool/special.c
> @@ -188,8 +188,10 @@ int special_get_alts(struct elf *elf, struct list_head *alts)
> memset(alt, 0, sizeof(*alt));
>
> ret = get_alt_entry(elf, entry, sec, idx, alt);
> - if (ret)
> + if (ret) {
> + free(alt);
> return ret;
> + }
>
> list_add_tail(&alt->list, alts);
> }
> --
> 2.27.0
>

2020-06-15 10:50:13

by Peter Zijlstra

[permalink] [raw]
Subject: Re: [PATCH] objtool: Free memory in error case in special_get_alts

On Mon, Jun 15, 2020 at 12:40:32PM +0200, Miroslav Benes wrote:
> Hi,
>
> On Fri, 12 Jun 2020, Tobias Klauser wrote:
>
> > Avoid a memory leak in case get_alt_entry returns an error.
>
> yes, this is not the only one, but I doubt we want to spend time on that.
> The process is about to exit anyway.

Right, that's just wasting cycles.