[libvirt] [PATCH] qemu: Fix FD leak in qemudStartVMDaemon
Matthias Bolte
matthias.bolte at googlemail.com
Thu Mar 18 23:02:37 UTC 2010
2010/3/18 Daniel Veillard <veillard at redhat.com>:
> On Thu, Mar 18, 2010 at 02:31:56PM +0100, Matthias Bolte wrote:
>> 2010/3/18 Daniel Veillard <veillard at redhat.com>:
>> > On Wed, Mar 17, 2010 at 10:35:51PM +0100, Matthias Bolte wrote:
>> >> The logfile FD is dup2'ed in __virExec in the child. The FD needs to
>> >> be closed in the parent, otherwise it leaks.
>> >> ---
>> >> src/qemu/qemu_driver.c | 3 +++
>> >> 1 files changed, 3 insertions(+), 0 deletions(-)
>> >>
>> >> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
>> >> index c8f3a15..fbb1275 100644
>> >> --- a/src/qemu/qemu_driver.c
>> >> +++ b/src/qemu/qemu_driver.c
>> >> @@ -2963,6 +2963,9 @@ static int qemudStartVMDaemon(virConnectPtr conn,
>> >> if (virDomainSaveStatus(driver->caps, driver->stateDir, vm) < 0)
>> >> goto abort;
>> >>
>> >> + if (logfile != -1)
>> >> + close(logfile);
>> >> +
>> >> return 0;
>> >>
>> >> cleanup:
>> >
>> > ACK, but we test
>> >
>> > if ((logfile = ...) < 0)
>> > goto cleanup;
>> >
>> > so the logical counterpart would be
>> >
>> > if (logfile >= 0)
>> > close(logfile);
>> >
>> > Daniel
>> >
>>
>> True. I just copied the the close call from the cleanup block. Both
>> blocks (cleanup and abort) check for != 1, so one could argue to
>> change them to >= 0 too.
>
> Either way, let's plug the leak :-)
>
> thanks !
>
> Daniel
>
Yep, pushed.
Matthias
More information about the libvir-list
mailing list