[CRIU] [PATCH] net: don't call netns_entry__free_unpacked for uninitialized pointer (v2)

Pavel Tikhomirov ptikhomirov at odin.com
Tue Jun 9 04:54:38 PDT 2015


Acked-by: Pavel Tikhomirov <ptikhomirov at virtuozzo.com>

On 06/09/2015 02:51 PM, Andrey Vagin wrote:
> If the netns image is absent, the NetnsEntry entry will not be initialized.
>
> Currently restore from old images crashes:
>
> Core was generated by `criu swrk 3'.
> Program terminated with signal SIGSEGV, Segmentation fault.
> $0  0x0000000000427d80 in netns_entry.free_unpacked ()
> (gdb) bt
> $0  0x0000000000427d80 in netns_entry.free_unpacked ()
> $1  0x0000000000436d07 in prepare_net_ns ()
> $2  0x0000000000457c78 in prepare_namespace ()
> $3  0x0000000000432917 in restore_task_with_children ()
> $4  0x00007fc86acfccfd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
>
> v2: remove debugging code
>
> Cc: Pavel Tikhomirov <ptikhomirov at virtuozzo.com>
> Signed-off-by: Andrey Vagin <avagin at openvz.org>
> ---
>   net.c | 5 +++--
>   1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/net.c b/net.c
> index e7354a4..082ccb6 100644
> --- a/net.c
> +++ b/net.c
> @@ -728,12 +728,13 @@ int dump_net_ns(int ns_id)
>   int prepare_net_ns(int pid)
>   {
>   	int ret;
> -	NetnsEntry *netns;
> +	NetnsEntry *netns = NULL;
>
>   	ret = restore_netns_conf(pid, &netns);
>   	if (!ret)
>   		ret = restore_links(pid, &netns);
> -	netns_entry__free_unpacked(netns, NULL);
> +	if (netns)
> +		netns_entry__free_unpacked(netns, NULL);
>
>   	if (!ret)
>   		ret = restore_ifaddr(pid);
>

-- 
Best regards, Tikhomirov Pavel
Junior Software Developer, Odin.


More information about the CRIU mailing list