[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v3 19/28] tools/libxl: Convert a legacy stream if needed

On 13/07/15 15:51, Ian Jackson wrote:
> Andrew Cooper writes ("[PATCH v3 19/28] tools/libxl: Convert a legacy stream 
> if needed"):
>> For backwards compatibility, a legacy stream needs converting before
>> it can be read by the v2 stream logic.
>> This causes the v2 stream logic to need to juggle two parallel tasks.
>> check_all_finished() is introduced for the purpose of joining the
>> tasks in both success and error cases.
> ...
>> +    /* If we started a conversion helper, we took ownership of its carefd. 
>> */
>> +    if (stream->chs.v2_carefd)
>> +        libxl__carefd_close(stream->chs.v2_carefd);
> This would be more obviously correct (or at least more obviously never
> leak a carefd) if you set v2_carefd to NULL here, and asserted its
> NULLness at the end of check_all_finished just before making the
> callback.

This argument applies to all the cleanup in this function, but we
already assert that stream_done() is strictly executed once.

It would seem wrong to me to check just v2_carefd here, given all the
other resources in need of cleanup.

> (I looked to see if you initialised it to NULL as well; you don't, but
> the existing code is not consistent about whether it works on systems
> where all-bits-0 is not NULL, and I think it unlikely that Xen would
> ever be made to work on such a system.)

Given how POSIX-dependent libxl is, I don't see this being likely either.


Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.