On 06/25/10 - 03:36:39PM, Eric Blake wrote:
On 06/25/2010 03:22 PM, Chris Lalancette wrote:
> There was one major, and a few minor bugs having to do with
> the reference counting of node devices in daemon/remote.c
> The major bug was that remoteDispatchNodeDeviceListCaps()
> was completely failing to unreference node devices; this
> would lead to many open file descriptors, which would eventually
> fail.
>
> The minor bugs were along the same lines, but were in rarely
> used error paths. Still, they should be corrected.
>
> Signed-off-by: Chris Lalancette <clalance(a)redhat.com>
> ---
> daemon/remote.c | 7 +++++++
> 1 files changed, 7 insertions(+), 0 deletions(-)
>
> diff --git a/daemon/remote.c b/daemon/remote.c
> index 91faa9a..ec5f85b 100644
> --- a/daemon/remote.c
> +++ b/daemon/remote.c
> @@ -5012,11 +5012,13 @@ remoteDispatchNodeDeviceGetParent (struct qemud_server
*server ATTRIBUTE_UNUSED,
> /* remoteDispatchClientRequest will free this. */
> char **parent_p;
> if (VIR_ALLOC(parent_p) < 0) {
> + virNodeDeviceFree(dev);
> remoteDispatchOOMError(rerr);
> return -1;
> }
ACK. But given the number of places where you had to duplicate this
line insertion, would it be better to change all the return -1 into goto
cleanup, where the cleanup: label guarantees this cleanup for all
possible exit paths?
Yeah, I considered it. I'm going to push this patch as-is since it's pretty
important, and then I'll do a follow-up with the cleanup paths.
--
Chris Lalancette