[libvirt] [PATCH] qemu: Correctly label migration TCP socket passed to qemu

Jiri Denemark jdenemar at redhat.com
Thu Aug 25 14:30:56 UTC 2011


On Thu, Aug 25, 2011 at 08:16:58 -0600, Eric Blake wrote:
> On 08/25/2011 04:35 AM, Jiri Denemark wrote:
> > ---
> >   src/qemu/qemu_migration.c |    9 ++++++---
> >   1 files changed, 6 insertions(+), 3 deletions(-)
> >
> > diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
> > index a84faf6..d787a09 100644
> > --- a/src/qemu/qemu_migration.c
> > +++ b/src/qemu/qemu_migration.c
> > @@ -1484,9 +1484,12 @@ qemuMigrationRun(struct qemud_driver *driver,
> >       case MIGRATION_DEST_FD:
> >           if (spec->fwdType != MIGRATION_FWD_DIRECT)
> >               fd = spec->dest.fd.local;
> > -        ret = qemuMonitorMigrateToFd(priv->mon, migrate_flags,
> > -                                     spec->dest.fd.qemu);
> > -        VIR_FORCE_CLOSE(spec->dest.fd.qemu);
> 
> Unconditional, changed to...
> 
> > +        if (virSecurityManagerSetImageFDLabel(driver->securityManager, vm,
> > +                                              spec->dest.fd.qemu) == 0) {
> > +            ret = qemuMonitorMigrateToFd(priv->mon, migrate_flags,
> > +                                         spec->dest.fd.qemu);
> > +            VIR_FORCE_CLOSE(spec->dest.fd.qemu);
> 
> ...conditional.  Oops - you leak the fd if changing the label fails.

No, there's no leak here. The fd is closed by the caller in any case. Note,
we don't close it here if we fail before we ever get to
qemuMonitorMigrateToFd. This additional close after qemuMonitorMigrateToFd()
is just for better feeling in case migration started to avoid having an fd
open which doesn't technically belong to us anymore for the whole time of
migration.

Jirka




More information about the libvir-list mailing list