Move the unlinking of the state file earlier and get rid of the cleanup label. Signed-off-by: Peter Krempa <pkrempa@xxxxxxxxxx> --- src/locking/lock_daemon.c | 36 +++++++++++++++++------------------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/src/locking/lock_daemon.c b/src/locking/lock_daemon.c index 1edd912c3e..107fb22bc2 100644 --- a/src/locking/lock_daemon.c +++ b/src/locking/lock_daemon.c @@ -608,59 +608,57 @@ virLockDaemonPostExecRestart(const char *state_file, { const char *gotmagic; g_autofree char *wantmagic = NULL; - int ret = -1; g_autofree char *state = NULL; g_autoptr(virJSONValue) object = NULL; + int rc; VIR_DEBUG("Running post-restart exec"); if (!virFileExists(state_file)) { VIR_DEBUG("No restart state file %s present", state_file); - ret = 0; - goto cleanup; + return 0; } - if (virFileReadAll(state_file, - 1024 * 1024 * 10, /* 10 MB */ - &state) < 0) - goto cleanup; + rc = virFileReadAll(state_file, + 1024 * 1024 * 10, /* 10 MB */ + &state); + + unlink(state_file); + + if (rc < 0) + return -1; VIR_DEBUG("Loading state %s", state); if (!(object = virJSONValueFromString(state))) - goto cleanup; + return -1; gotmagic = virJSONValueObjectGetString(object, "magic"); if (!gotmagic) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Missing magic data in JSON document")); - goto cleanup; + return -1; } if (!(wantmagic = virLockDaemonGetExecRestartMagic())) - goto cleanup; + return -1; if (STRNEQ(gotmagic, wantmagic)) { VIR_WARN("Found restart exec file with old magic %s vs wanted %s", gotmagic, wantmagic); - ret = 0; - goto cleanup; + return 0; } /* Re-claim PID file now as we will not be daemonizing */ if (pid_file && (*pid_file_fd = virPidFileAcquirePath(pid_file, false, getpid())) < 0) - goto cleanup; + return -1; if (!(lockDaemon = virLockDaemonNewPostExecRestart(object, privileged))) - goto cleanup; - - ret = 1; + return -1; - cleanup: - unlink(state_file); - return ret; + return 1; } -- 2.31.1