From nobody Thu Dec 18 23:01:57 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1678293607; cv=none; d=zohomail.com; s=zohoarc; b=RXk3idLJT/veSYKv5ARuo91En0sK2hz1Q11lnm5ZS294/untLZ6u0alcLKN9tmHq2BdwC+zrL/mHjA5f8zZjsu0XhrgKuobfMN/bY1BkgthGVomLp29TpTlTOCWKibie5TAYhyJ7C2JxV8GzDt9I9HgUk3o2joihNBc45LE4Z9w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1678293607; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=MK4mXtFF6jL6Dv3btg6Hgl85v+Zpouz/LKQFKK6b4ws=; b=eTXVur0YROnvPuYSec4uPupJqxJpWAIUIVMjftN/z9EF8/DnvMUmatOsdXJwDpDeIaKHhpElHcNMvUJEcnNNCKRKSgEX3Y+k50iVVbCglaDLhOMXigmzzwuD+Ycz7K8v36/Sybl8VlaRs/HXYk44uA+msNuSca2YLurikkhVCEE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1678293607113911.9678205441638; Wed, 8 Mar 2023 08:40:07 -0800 (PST) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-484-ab1MqJQjNw6srUX15aMLew-1; Wed, 08 Mar 2023 11:39:35 -0500 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 8BD9C1C02CAC; Wed, 8 Mar 2023 16:39:23 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 726DF492B08; Wed, 8 Mar 2023 16:39:23 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 3697619472F2; Wed, 8 Mar 2023 16:39:21 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 0452719472C2 for ; Wed, 8 Mar 2023 16:39:20 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id EC6D3112132D; Wed, 8 Mar 2023 16:39:19 +0000 (UTC) Received: from virtlab420.virt.lab.eng.bos.redhat.com (virtlab420.virt.lab.eng.bos.redhat.com [10.19.152.148]) by smtp.corp.redhat.com (Postfix) with ESMTP id D256F1121330; Wed, 8 Mar 2023 16:39:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1678293606; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=MK4mXtFF6jL6Dv3btg6Hgl85v+Zpouz/LKQFKK6b4ws=; b=DTKoDzks3DvEytwkAdmEUwc+7owPk5eP5wuBfxG6Iod8q/vGZ/8Pap8qt6h5v+bd5madt/ i/326/YetAMSuWQ4mN2WUnF6pdpoEEUVjMq2+0oD3riVaFJC+MohwRFK+LTG/pY28Zoa4u tivO4UY2cfuSds55GKs4JYa6863DlsY= X-MC-Unique: ab1MqJQjNw6srUX15aMLew-1 X-Original-To: libvir-list@listman.corp.redhat.com From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Subject: [PATCH 14/16] admin: use g_auto for client RPC return parameters Date: Wed, 8 Mar 2023 11:39:11 -0500 Message-Id: <20230308163913.338952-15-berrange@redhat.com> In-Reply-To: <20230308163913.338952-1-berrange@redhat.com> References: <20230308163913.338952-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.3 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1678293608809100007 Currently some, but not all, methods have a call to the xdr_free function, for the 'ret' variable. This is done on methods where there are complex structs containing allocated memory. In other cases the structs contain allocated memory, but the pointer is stolen, so xdr_free is not called. In other cases no allocated memory is present, so xdr_free. This is hard to reason about, because the definition of the struct is not visible in the client stubs. Switch to use g_auto() for the 'ret' variable, which means 'xdr_free' is always going to be called. Some places now need to use g_steal_pointer as a result. Signed-off-by: Daniel P. Berrang=C3=A9 --- src/admin/admin_remote.c | 50 +++++++++++----------------------------- 1 file changed, 14 insertions(+), 36 deletions(-) diff --git a/src/admin/admin_remote.c b/src/admin/admin_remote.c index 3ae20ff373..3291a1e965 100644 --- a/src/admin/admin_remote.c +++ b/src/admin/admin_remote.c @@ -229,10 +229,9 @@ remoteAdminServerGetThreadPoolParameters(virAdmServerP= tr srv, int *nparams, unsigned int flags) { - int rv =3D -1; remoteAdminPriv *priv =3D srv->conn->privateData; admin_server_get_threadpool_parameters_args args; - admin_server_get_threadpool_parameters_ret ret =3D {0}; + g_auto(admin_server_get_threadpool_parameters_ret) ret =3D {0}; VIR_LOCK_GUARD lock =3D virObjectLockGuard(priv); =20 args.flags =3D flags; @@ -248,13 +247,9 @@ remoteAdminServerGetThreadPoolParameters(virAdmServerP= tr srv, ADMIN_SERVER_THREADPOOL_PARAMETERS_MAX, params, nparams) < 0) - goto cleanup; - - rv =3D 0; + return -1; =20 - cleanup: - xdr_free((xdrproc_t)xdr_admin_server_get_threadpool_parameters_ret, (c= har *) &ret); - return rv; + return 0; } =20 static int @@ -297,10 +292,9 @@ remoteAdminClientGetInfo(virAdmClientPtr client, int *nparams, unsigned int flags) { - int rv =3D -1; remoteAdminPriv *priv =3D client->srv->conn->privateData; admin_client_get_info_args args; - admin_client_get_info_ret ret =3D {0}; + g_auto(admin_client_get_info_ret) ret =3D {0}; VIR_LOCK_GUARD lock =3D virObjectLockGuard(priv); =20 args.flags =3D flags; @@ -316,13 +310,9 @@ remoteAdminClientGetInfo(virAdmClientPtr client, ADMIN_CLIENT_INFO_PARAMETERS_MAX, params, nparams) < 0) - goto cleanup; - - rv =3D 0; + return -1; =20 - cleanup: - xdr_free((xdrproc_t)xdr_admin_client_get_info_ret, (char *) &ret); - return rv; + return 0; } =20 static int @@ -331,9 +321,8 @@ remoteAdminServerGetClientLimits(virAdmServerPtr srv, int *nparams, unsigned int flags) { - int rv =3D -1; admin_server_get_client_limits_args args; - admin_server_get_client_limits_ret ret =3D {0}; + g_auto(admin_server_get_client_limits_ret) ret =3D {0}; remoteAdminPriv *priv =3D srv->conn->privateData; VIR_LOCK_GUARD lock =3D virObjectLockGuard(priv); =20 @@ -352,14 +341,9 @@ remoteAdminServerGetClientLimits(virAdmServerPtr srv, ADMIN_SERVER_CLIENT_LIMITS_MAX, params, nparams) < 0) - goto cleanup; - - rv =3D 0; + return -1; =20 - cleanup: - xdr_free((xdrproc_t) xdr_admin_server_get_client_limits_ret, - (char *) &ret); - return rv; + return 0; } =20 static int @@ -401,10 +385,9 @@ remoteAdminConnectGetLoggingOutputs(virAdmConnectPtr c= onn, char **outputs, unsigned int flags) { - int rv =3D -1; remoteAdminPriv *priv =3D conn->privateData; admin_connect_get_logging_outputs_args args; - admin_connect_get_logging_outputs_ret ret =3D {0}; + g_auto(admin_connect_get_logging_outputs_ret) ret =3D {0}; VIR_LOCK_GUARD lock =3D virObjectLockGuard(priv); =20 args.flags =3D flags; @@ -421,9 +404,7 @@ remoteAdminConnectGetLoggingOutputs(virAdmConnectPtr co= nn, if (outputs) *outputs =3D g_steal_pointer(&ret.outputs); =20 - rv =3D ret.noutputs; - xdr_free((xdrproc_t) xdr_admin_connect_get_logging_outputs_ret, (char = *) &ret); - return rv; + return ret.noutputs; } =20 static int @@ -431,10 +412,9 @@ remoteAdminConnectGetLoggingFilters(virAdmConnectPtr c= onn, char **filters, unsigned int flags) { - int rv =3D -1; remoteAdminPriv *priv =3D conn->privateData; admin_connect_get_logging_filters_args args; - admin_connect_get_logging_filters_ret ret =3D {0}; + g_auto(admin_connect_get_logging_filters_ret) ret =3D {0}; VIR_LOCK_GUARD lock =3D virObjectLockGuard(priv); =20 args.flags =3D flags; @@ -449,9 +429,7 @@ remoteAdminConnectGetLoggingFilters(virAdmConnectPtr co= nn, return -1; =20 if (filters) - *filters =3D ret.filters ? *ret.filters : NULL; + *filters =3D ret.filters ? g_steal_pointer(ret.filters) : NULL; =20 - rv =3D ret.nfilters; - VIR_FREE(ret.filters); - return rv; + return ret.nfilters; } --=20 2.39.1