On 09/24/2012 11:45 AM, Markus Armbruster wrote: > Orit Wasserman <owass...@redhat.com> writes: > >> Signed-off-by: Orit Wasserman <owass...@redhat.com> >> --- >> migration.c | 3 +-- >> 1 files changed, 1 insertions(+), 2 deletions(-) >> >> diff --git a/migration.c b/migration.c >> index 1edeec5..c20a2fe 100644 >> --- a/migration.c >> +++ b/migration.c >> @@ -240,8 +240,6 @@ static int migrate_fd_cleanup(MigrationState *s) >> { >> int ret = 0; >> >> - qemu_set_fd_handler2(s->fd, NULL, NULL, NULL, NULL); >> - >> if (s->file) { >> DPRINTF("closing file\n"); >> ret = qemu_fclose(s->file); >> @@ -249,6 +247,7 @@ static int migrate_fd_cleanup(MigrationState *s) >> } >> >> if (s->fd != -1) { >> + qemu_set_fd_handler2(s->fd, NULL, NULL, NULL, NULL); >> close(s->fd); >> s->fd = -1; >> } > > As far as I can see, qemu_set_fd_handler2() treats invalid file > descriptor -1 just like any other. If it's in io_handlers, it gets > deleted, else it's a nop. Thus, the old code works. Not any more, there was an assert(fd >=0) added in commit bbdd2ad0814ea0911076419ea21b7957505cf1cc recently.
But I agree > passing invalid file descriptors is abusing the interface. > > I'm not sufficiently familiar with the migration code to judge whether > moving the handler reset down is safe. > I can keep the call in the same location if you think it is safer. Orit