From acc9a611055f72d5898fda1edbfb4e08956cca3c Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Tue, 23 Jun 2015 19:22:41 +0100 Subject: [PATCH] libxl: When save/restore helper dies, do not overwrite rc If we already have an rc (eg from ao abort), keep it. Signed-off-by: Ian Jackson Acked-by: Wei Liu --- v4: New patch in this version of the series. --- tools/libxl/libxl_save_callout.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/tools/libxl/libxl_save_callout.c b/tools/libxl/libxl_save_callout.c index 93a884bb7d..087c2d5f36 100644 --- a/tools/libxl/libxl_save_callout.c +++ b/tools/libxl/libxl_save_callout.c @@ -332,19 +332,22 @@ static void helper_exited(libxl__egc *egc, libxl__ev_child *ch, if (status) { libxl_report_child_exitstatus(CTX, XTL_ERROR, what, pid, status); - shs->rc = ERROR_FAIL; + if (!shs->rc) + shs->rc = ERROR_FAIL; } if (shs->need_results) { - if (!shs->rc) + if (!shs->rc) { LOG(ERROR,"%s exited without providing results",what); - shs->rc = ERROR_FAIL; + shs->rc = ERROR_FAIL; + } } if (!shs->completed) { - if (!shs->rc) + if (!shs->rc) { LOG(ERROR,"%s exited without signaling completion",what); - shs->rc = ERROR_FAIL; + shs->rc = ERROR_FAIL; + } } helper_done(egc, shs); -- 2.30.2