diff --git a/src/lib/core/popen.c b/src/lib/core/popen.c
index 5d0587e00f7cfedb24e97bd11da69d8e2c5f2318..df7f797b98356478d0596cbb7f5af345cf030538 100644
--- a/src/lib/core/popen.c
+++ b/src/lib/core/popen.c
@@ -784,10 +784,11 @@ struct popen_handle *
 popen_new(struct popen_opts *opts)
 {
 	/*
-	 * Without volatile compiler claims that
-	 * handle might be clobbered from vfork.
+	 * Without volatile compiler claims that those
+	 * variables might be clobbered from vfork.
 	 */
 	struct popen_handle * volatile handle;
+	int volatile log_fd = -1;
 
 	int pfd[POPEN_FLAG_FD_STDEND_BIT][2] = {
 		{-1, -1}, {-1, -1}, {-1, -1},
@@ -853,7 +854,6 @@ popen_new(struct popen_opts *opts)
 	 * reached a file descriptor limit.
 	 */
 	int old_log_fd = log_get_fd();
-	int log_fd = -1;
 	if (old_log_fd >= 0) {
 		log_fd = dup_not_std_streams(old_log_fd);
 		if (log_fd < 0)