Skip to content

Commit

Permalink
fix realloc() error on reboot container
Browse files Browse the repository at this point in the history
The container with "lxc.network.type=phys" halted with error on reboot.

Error message:
*** glibc detected *** lxc-start: realloc(): invalid pointer: 0x0948eed0 ***

We have a sequence:

1) conf->saved_nic = relloc(NULL) on start start.c:container save_phys_nics()
2) free(conf->saved_nics) after stop container
   conf.c:lxc_rename_phys_nics_on_shutdown()
3) conf->saved_nic = relloc(conf->saved_nics) on restart container
   start.c:save_phys_nics() -> error relloc()

free(conf->saved_nics) in lxc_rename_phys_nics_on_shutdown()
unnecessary, it will be called later in lxc_clear_saved_nics().

Signed-off-by: Vitaly Lavrov <vel21ripn@gmail.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
  • Loading branch information
vel21ripn authored and stgraber committed Feb 27, 2014
1 parent c661b0a commit 0cf4550
Showing 1 changed file with 1 addition and 3 deletions.
4 changes: 1 addition & 3 deletions src/lxc/conf.c
Expand Up @@ -2565,7 +2565,6 @@ void lxc_rename_phys_nics_on_shutdown(struct lxc_conf *conf)
free(s->orig_name);
}
conf->num_savednics = 0;
free(conf->saved_nics);
}

static char *default_rootfs_mount = LXCROOTFSMOUNT;
Expand Down Expand Up @@ -4075,11 +4074,10 @@ static void lxc_clear_saved_nics(struct lxc_conf *conf)
{
int i;

if (!conf->num_savednics)
if (!conf->saved_nics)
return;
for (i=0; i < conf->num_savednics; i++)
free(conf->saved_nics[i].orig_name);
conf->saved_nics = 0;
free(conf->saved_nics);
}

Expand Down

0 comments on commit 0cf4550

Please sign in to comment.