batman-adv: Fix mem leak in the batadv_tt_local_event() function
Commit Message
Memory is allocated for 'tt_change_node' with kmalloc().
'tt_change_node' may go out of scope really being used for anything
(except have a few members initialized) if we hit the 'del:' label.
This patch makes sure we free the memory in that case.
Signed-off-by: Jesper Juhl <jj@chaosbits.net>
---
net/batman-adv/translation-table.c | 1 +
1 file changed, 1 insertion(+)
Compile tested only.
Comments
On Tue, 7 Aug 2012, Jesper Juhl wrote:
> Memory is allocated for 'tt_change_node' with kmalloc().
> 'tt_change_node' may go out of scope really being used for anything
This should of course read "... go out of scope without really being used ..." .
> (except have a few members initialized) if we hit the 'del:' label.
> This patch makes sure we free the memory in that case.
>
> Signed-off-by: Jesper Juhl <jj@chaosbits.net>
> ---
> net/batman-adv/translation-table.c | 1 +
> 1 file changed, 1 insertion(+)
>
> Compile tested only.
>
> diff --git a/net/batman-adv/translation-table.c b/net/batman-adv/translation-table.c
> index a438f4b..99dd8f7 100644
> --- a/net/batman-adv/translation-table.c
> +++ b/net/batman-adv/translation-table.c
> @@ -197,6 +197,7 @@ static void batadv_tt_local_event(struct batadv_priv *bat_priv,
> del:
> list_del(&entry->list);
> kfree(entry);
> + kfree(tt_change_node);
> event_removed = true;
> goto unlock;
> }
>
On Tue, Aug 07, 2012 at 08:32:34PM +0200, Jesper Juhl wrote:
> Memory is allocated for 'tt_change_node' with kmalloc().
> 'tt_change_node' may go out of scope really being used for anything
> (except have a few members initialized) if we hit the 'del:' label.
> This patch makes sure we free the memory in that case.
>
> Signed-off-by: Jesper Juhl <jj@chaosbits.net>
Acked-by: Antonio Quartulli <ordex@autistici.org>
Thank you very much Jepser!
From: Antonio Quartulli <ordex@autistici.org>
Date: Tue, 7 Aug 2012 20:50:36 +0200
> On Tue, Aug 07, 2012 at 08:32:34PM +0200, Jesper Juhl wrote:
>> Memory is allocated for 'tt_change_node' with kmalloc().
>> 'tt_change_node' may go out of scope really being used for anything
>> (except have a few members initialized) if we hit the 'del:' label.
>> This patch makes sure we free the memory in that case.
>>
>> Signed-off-by: Jesper Juhl <jj@chaosbits.net>
>
> Acked-by: Antonio Quartulli <ordex@autistici.org>
Applied, thanks.
@@ -197,6 +197,7 @@ static void batadv_tt_local_event(struct batadv_priv *bat_priv,
del:
list_del(&entry->list);
kfree(entry);
+ kfree(tt_change_node);
event_removed = true;
goto unlock;
}