Using VIR_LOCK_GUARD enables the 'done' goto label to be
eliminated.
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
src/admin/admin_remote.c | 72 ++++++++++++----------------------------
1 file changed, 22 insertions(+), 50 deletions(-)
diff --git a/src/admin/admin_remote.c b/src/admin/admin_remote.c
index f99b93eef6..5322f087ec 100644
--- a/src/admin/admin_remote.c
+++ b/src/admin/admin_remote.c
@@ -133,8 +133,7 @@ remoteAdminClientCloseFunc(virNetClient *client G_GNUC_UNUSED,
void *opaque)
{
virAdmConnectCloseCallbackData *cbdata = opaque;
-
- virObjectLock(cbdata);
+ VIR_LOCK_GUARD lock = virObjectLockGuard(cbdata);
if (cbdata->callback) {
VIR_DEBUG("Triggering connection close callback %p reason=%d,
opaque=%p",
@@ -142,17 +141,14 @@ remoteAdminClientCloseFunc(virNetClient *client G_GNUC_UNUSED,
cbdata->callback(cbdata->conn, reason, cbdata->opaque);
virAdmConnectCloseCallbackDataReset(cbdata);
}
- virObjectUnlock(cbdata);
}
static int
remoteAdminConnectOpen(virAdmConnectPtr conn, unsigned int flags)
{
- int rv = -1;
remoteAdminPriv *priv = conn->privateData;
admin_connect_open_args args;
-
- virObjectLock(priv);
+ VIR_LOCK_GUARD lock = virObjectLockGuard(priv);
args.flags = flags & ~VIR_CONNECT_NO_ALIASES;
@@ -169,40 +165,28 @@ remoteAdminConnectOpen(virAdmConnectPtr conn, unsigned int flags)
if (call(conn, 0, ADMIN_PROC_CONNECT_OPEN,
(xdrproc_t)xdr_admin_connect_open_args, (char *)&args,
- (xdrproc_t)xdr_void, (char *)NULL) == -1) {
- goto done;
- }
+ (xdrproc_t)xdr_void, (char *)NULL) == -1)
+ return -1;
- rv = 0;
-
- done:
- virObjectUnlock(priv);
- return rv;
+ return 0;
}
static int
remoteAdminConnectClose(virAdmConnectPtr conn)
{
- int rv = -1;
remoteAdminPriv *priv = conn->privateData;
-
- virObjectLock(priv);
+ VIR_LOCK_GUARD lock = virObjectLockGuard(priv);
if (call(conn, 0, ADMIN_PROC_CONNECT_CLOSE,
(xdrproc_t)xdr_void, (char *)NULL,
- (xdrproc_t)xdr_void, (char *)NULL) == -1) {
- goto done;
- }
+ (xdrproc_t)xdr_void, (char *)NULL) == -1)
+ return -1;
virNetClientSetCloseCallback(priv->client, NULL, conn->closeCallback,
virObjectUnref);
virNetClientClose(priv->client);
- rv = 0;
-
- done:
- virObjectUnlock(priv);
- return rv;
+ return 0;
}
static void
@@ -249,17 +233,17 @@ remoteAdminServerGetThreadPoolParameters(virAdmServerPtr srv,
remoteAdminPriv *priv = srv->conn->privateData;
admin_server_get_threadpool_parameters_args args;
admin_server_get_threadpool_parameters_ret ret;
+ VIR_LOCK_GUARD lock = virObjectLockGuard(priv);
args.flags = flags;
make_nonnull_server(&args.srv, srv);
memset(&ret, 0, sizeof(ret));
- virObjectLock(priv);
if (call(srv->conn, 0, ADMIN_PROC_SERVER_GET_THREADPOOL_PARAMETERS,
(xdrproc_t)xdr_admin_server_get_threadpool_parameters_args, (char *)
&args,
(xdrproc_t)xdr_admin_server_get_threadpool_parameters_ret, (char *)
&ret) == -1)
- goto cleanup;
+ return -1;
if (virTypedParamsDeserialize((struct _virTypedParameterRemote *)
ret.params.params_val,
ret.params.params_len,
@@ -272,7 +256,6 @@ remoteAdminServerGetThreadPoolParameters(virAdmServerPtr srv,
cleanup:
xdr_free((xdrproc_t)xdr_admin_server_get_threadpool_parameters_ret, (char *)
&ret);
- virObjectUnlock(priv);
return rv;
}
@@ -285,12 +268,11 @@ remoteAdminServerSetThreadPoolParameters(virAdmServerPtr srv,
int rv = -1;
remoteAdminPriv *priv = srv->conn->privateData;
admin_server_set_threadpool_parameters_args args;
+ VIR_LOCK_GUARD lock = virObjectLockGuard(priv);
args.flags = flags;
make_nonnull_server(&args.srv, srv);
- virObjectLock(priv);
-
if (virTypedParamsSerialize(params, nparams,
ADMIN_SERVER_THREADPOOL_PARAMETERS_MAX,
(struct _virTypedParameterRemote **)
&args.params.params_val,
@@ -308,7 +290,6 @@ remoteAdminServerSetThreadPoolParameters(virAdmServerPtr srv,
cleanup:
virTypedParamsRemoteFree((struct _virTypedParameterRemote *) args.params.params_val,
args.params.params_len);
- virObjectUnlock(priv);
return rv;
}
@@ -322,17 +303,17 @@ remoteAdminClientGetInfo(virAdmClientPtr client,
remoteAdminPriv *priv = client->srv->conn->privateData;
admin_client_get_info_args args;
admin_client_get_info_ret ret;
+ VIR_LOCK_GUARD lock = virObjectLockGuard(priv);
args.flags = flags;
make_nonnull_client(&args.clnt, client);
memset(&ret, 0, sizeof(ret));
- virObjectLock(priv);
if (call(client->srv->conn, 0, ADMIN_PROC_CLIENT_GET_INFO,
(xdrproc_t)xdr_admin_client_get_info_args, (char *) &args,
(xdrproc_t)xdr_admin_client_get_info_ret, (char *) &ret) == -1)
- goto cleanup;
+ return -1;
if (virTypedParamsDeserialize((struct _virTypedParameterRemote *)
ret.params.params_val,
ret.params.params_len,
@@ -345,7 +326,6 @@ remoteAdminClientGetInfo(virAdmClientPtr client,
cleanup:
xdr_free((xdrproc_t)xdr_admin_client_get_info_ret, (char *) &ret);
- virObjectUnlock(priv);
return rv;
}
@@ -359,18 +339,19 @@ remoteAdminServerGetClientLimits(virAdmServerPtr srv,
admin_server_get_client_limits_args args;
admin_server_get_client_limits_ret ret;
remoteAdminPriv *priv = srv->conn->privateData;
+ VIR_LOCK_GUARD lock = virObjectLockGuard(priv);
+
args.flags = flags;
make_nonnull_server(&args.srv, srv);
memset(&ret, 0, sizeof(ret));
- virObjectLock(priv);
if (call(srv->conn, 0, ADMIN_PROC_SERVER_GET_CLIENT_LIMITS,
(xdrproc_t) xdr_admin_server_get_client_limits_args,
(char *) &args,
(xdrproc_t) xdr_admin_server_get_client_limits_ret,
(char *) &ret) == -1)
- goto cleanup;
+ return -1;
if (virTypedParamsDeserialize((struct _virTypedParameterRemote *)
ret.params.params_val,
ret.params.params_len,
@@ -384,7 +365,6 @@ remoteAdminServerGetClientLimits(virAdmServerPtr srv,
cleanup:
xdr_free((xdrproc_t) xdr_admin_server_get_client_limits_ret,
(char *) &ret);
- virObjectUnlock(priv);
return rv;
}
@@ -397,12 +377,11 @@ remoteAdminServerSetClientLimits(virAdmServerPtr srv,
int rv = -1;
admin_server_set_client_limits_args args;
remoteAdminPriv *priv = srv->conn->privateData;
+ VIR_LOCK_GUARD lock = virObjectLockGuard(priv);
args.flags = flags;
make_nonnull_server(&args.srv, srv);
- virObjectLock(priv);
-
if (virTypedParamsSerialize(params, nparams,
ADMIN_SERVER_CLIENT_LIMITS_MAX,
(struct _virTypedParameterRemote **)
&args.params.params_val,
@@ -420,7 +399,6 @@ remoteAdminServerSetClientLimits(virAdmServerPtr srv,
cleanup:
virTypedParamsRemoteFree((struct _virTypedParameterRemote *) args.params.params_val,
args.params.params_len);
- virObjectUnlock(priv);
return rv;
}
@@ -433,11 +411,11 @@ remoteAdminConnectGetLoggingOutputs(virAdmConnectPtr conn,
remoteAdminPriv *priv = conn->privateData;
admin_connect_get_logging_outputs_args args;
admin_connect_get_logging_outputs_ret ret;
+ VIR_LOCK_GUARD lock = virObjectLockGuard(priv);
args.flags = flags;
memset(&ret, 0, sizeof(ret));
- virObjectLock(priv);
if (call(conn,
0,
@@ -446,16 +424,13 @@ remoteAdminConnectGetLoggingOutputs(virAdmConnectPtr conn,
(char *) &args,
(xdrproc_t) xdr_admin_connect_get_logging_outputs_ret,
(char *) &ret) == -1)
- goto done;
+ return -1;
if (outputs)
*outputs = g_steal_pointer(&ret.outputs);
rv = ret.noutputs;
xdr_free((xdrproc_t) xdr_admin_connect_get_logging_outputs_ret, (char *) &ret);
-
- done:
- virObjectUnlock(priv);
return rv;
}
@@ -468,11 +443,11 @@ remoteAdminConnectGetLoggingFilters(virAdmConnectPtr conn,
remoteAdminPriv *priv = conn->privateData;
admin_connect_get_logging_filters_args args;
admin_connect_get_logging_filters_ret ret;
+ VIR_LOCK_GUARD lock = virObjectLockGuard(priv);
args.flags = flags;
memset(&ret, 0, sizeof(ret));
- virObjectLock(priv);
if (call(conn,
0,
@@ -481,15 +456,12 @@ remoteAdminConnectGetLoggingFilters(virAdmConnectPtr conn,
(char *) &args,
(xdrproc_t) xdr_admin_connect_get_logging_filters_ret,
(char *) &ret) == -1)
- goto done;
+ return -1;
if (filters)
*filters = ret.filters ? *ret.filters : NULL;
rv = ret.nfilters;
VIR_FREE(ret.filters);
-
- done:
- virObjectUnlock(priv);
return rv;
}
--
2.38.1