g_free(list);
}
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(virSecurityDACChownList, virSecurityDACChownListFree);
+
/**
* virSecurityDACTransactionAppend:
static int
virSecurityDACTransactionStart(virSecurityManager *mgr)
{
- virSecurityDACChownList *list;
+ g_autoptr(virSecurityDACChownList) list = NULL;
- list = virThreadLocalGet(&chownList);
- if (list) {
+ if (virThreadLocalGet(&chownList)) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("Another relabel transaction is already started"));
return -1;
if (virThreadLocalSet(&chownList, list) < 0) {
virReportSystemError(errno, "%s",
_("Unable to set thread local variable"));
- virSecurityDACChownListFree(list);
return -1;
}
+ list = NULL;
return 0;
}
pid_t pid,
bool lock)
{
- virSecurityDACChownList *list;
+ g_autoptr(virSecurityDACChownList) list = NULL;
int rc;
- int ret = -1;
list = virThreadLocalGet(&chownList);
if (!list) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("No transaction is set"));
- goto cleanup;
+ return -1;
}
if (virThreadLocalSet(&chownList, NULL) < 0) {
virReportSystemError(errno, "%s",
_("Unable to clear thread local variable"));
- goto cleanup;
+ return -1;
}
list->lock = lock;
if (virGetLastErrorCode() == VIR_ERR_SYSTEM_ERROR)
pid = -1;
else
- goto cleanup;
+ return -1;
}
}
}
if (rc < 0)
- goto cleanup;
+ return -1;
- ret = 0;
- cleanup:
- virSecurityDACChownListFree(list);
- return ret;
+ return 0;
}
/**
static void
virSecurityDACTransactionAbort(virSecurityManager *mgr G_GNUC_UNUSED)
{
- virSecurityDACChownList *list;
+ g_autoptr(virSecurityDACChownList) list = NULL;
list = virThreadLocalGet(&chownList);
if (!list)
if (virThreadLocalSet(&chownList, NULL) < 0)
VIR_DEBUG("Unable to clear thread local variable");
- virSecurityDACChownListFree(list);
}