[systemd-devel] [PATCH] sd-dhcp-client: prevent timer related memory leaks

Umut Tezduyar Lindskog umut.tezduyar at axis.com
Thu Feb 20 12:05:40 PST 2014


________________________________________
From: Lennart Poettering [lennart at poettering.net]
Sent: Thursday, February 20, 2014 8:38 PM
To: Umut Tezduyar Lindskog
Cc: systemd-devel at lists.freedesktop.org; Umut Tezduyar Lindskog
Subject: Re: [systemd-devel] [PATCH] sd-dhcp-client: prevent timer related memory leaks

On Thu, 20.02.14 19:49, Umut Tezduyar Lindskog (umut.tezduyar at axis.com) wrote:

> ---
>  src/libsystemd-dhcp/sd-dhcp-client.c |    6 ++++++
>  1 file changed, 6 insertions(+)
>
> diff --git a/src/libsystemd-dhcp/sd-dhcp-client.c b/src/libsystemd-dhcp/sd-dhcp-client.c
> index ec2b53f..84d38f0 100644
> --- a/src/libsystemd-dhcp/sd-dhcp-client.c
> +++ b/src/libsystemd-dhcp/sd-dhcp-client.c
> @@ -392,6 +392,9 @@ static int client_timeout_resend(sd_event_source *s, uint64_t usec,
>
>          next_timeout += (random_u32() & 0x1fffff);
>
> +        if (client->timeout_resend)
> +                client->timeout_resend = sd_event_source_unref(client->timeout_resend);
> +

You can drop the if check btw. We explicitly designed all our _unref()
calls so that they are happy with a NULL argument and return NULL in
that case...

Sure. I also thought about putting an assert on "*ret" in sd_event_add_monotonic once dhcp is fixed.

>          r = sd_event_add_monotonic(client->event,
>                                       &client->timeout_resend,
>                                       next_timeout,
> @@ -477,6 +480,9 @@ static int client_initialize_events(sd_dhcp_client *client,
>          if (r < 0)
>                  goto error;
>
> +        if (client->timeout_resend)
> +                client->timeout_resend = sd_event_source_unref(client->timeout_resend);
> +
>          r = sd_event_add_monotonic(client->event,
>                                     &client->timeout_resend,
>                                     usec, 0,


Lennart

--
Lennart Poettering, Red Hat


More information about the systemd-devel mailing list