From d1f73967c601da8d3a77d5ade779807ed10fa0d3 Mon Sep 17 00:00:00 2001
From: lc85446 <lc85446@alibaba-inc.com>
Date: Thu, 26 Nov 2015 11:46:40 +0800
Subject: [PATCH]     core:execute: fix fork() fail handling in exec_spawn()

    If pid < 0 after fork(), 0 is always returned because r =
    exec_context_load_environment() has exited successfully.

    This will make the caller of exec_spawn() not able to handle
    the fork() error case and make systemd abort assert() possibly.
---
 src/core/execute.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/core/execute.c b/src/core/execute.c
index 21721dc..50381ba 100644
--- a/src/core/execute.c
+++ b/src/core/execute.c
@@ -1903,7 +1903,7 @@ int exec_spawn(Unit *unit,
                    NULL);
         pid = fork();
         if (pid < 0)
-                return log_unit_error_errno(unit, r, "Failed to fork: %m");
+                return log_unit_error_errno(unit, errno, "Failed to fork: %m");
 
         if (pid == 0) {
                 int exit_status;
-- 
1.7.9.5

