[CRIU] [PATCH 3/3] ptrace: print error code for PTRACE_DETACH

Andrey Vagin avagin at openvz.org
Tue Sep 1 00:47:30 PDT 2015


From: Andrei Vagin <avagin at localhost.localdomain>

*** CID 139494:  Error handling issues  (CHECKED_RETURN)
---
 ptrace.c | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/ptrace.c b/ptrace.c
index ff319db..324b524 100644
--- a/ptrace.c
+++ b/ptrace.c
@@ -39,7 +39,12 @@ int unseize_task(pid_t pid, int orig_st, int st)
 	} else
 		pr_err("Unknown final state %d\n", st);
 
-	return ptrace(PTRACE_DETACH, pid, NULL, NULL);
+	if (ptrace(PTRACE_DETACH, pid, NULL, NULL)) {
+		pr_perror("Unable to detach from %d", pid);
+		return -1;
+	}
+
+	return 0;
 }
 
 int suspend_seccomp(pid_t pid)
@@ -79,7 +84,8 @@ int seize_catch_task(pid_t pid)
 	ret = ptrace(PTRACE_INTERRUPT, pid, NULL, NULL);
 	if (ret < 0) {
 		pr_warn("SEIZE %d: can't interrupt task: %s", pid, strerror(errno));
-		ptrace(PTRACE_DETACH, pid, NULL, NULL);
+		if (ptrace(PTRACE_DETACH, pid, NULL, NULL))
+			pr_perror("Unable to detach from %d", pid);
 	}
 
 	return ret;
@@ -227,7 +233,8 @@ try_again:
 err_stop:
 	kill(pid, SIGSTOP);
 err:
-	ptrace(PTRACE_DETACH, pid, NULL, NULL);
+	if (ptrace(PTRACE_DETACH, pid, NULL, NULL))
+		pr_perror("Unable to detach from %d", pid);
 	return -1;
 }
 
-- 
2.4.3



More information about the CRIU mailing list