Commit ce437d3d authored by Dmitry Safonov's avatar Dmitry Safonov Committed by Andrei Vagin

x86/kdat: Check PTRACE_TRACEME return value

Coverity has informed:

*** CID 188251:  Error handling issues  (CHECKED_RETURN)
/criu/arch/x86/crtools.c: 196 in kdat_x86_has_ptrace_fpu_xsave_bug_child()
190             return 0;
191     }
192     #endif
193
194     static int kdat_x86_has_ptrace_fpu_xsave_bug_child(void *arg)
195     {
>>>     CID 188251:  Error handling issues  (CHECKED_RETURN)
>>>     Calling "ptrace" without checking return value (as is done elsewhere 46 out of 51 times).
196             ptrace(PTRACE_TRACEME, 0, 0, 0);
197             kill(getpid(), SIGSTOP);
198             pr_err("Continue after SIGSTOP.. Urr what?\n");
199             _exit(1);
200     }
201

Also added checks for kill() and waitpid().
Signed-off-by: 's avatarDmitry Safonov <dima@arista.com>
Signed-off-by: 's avatarAndrei Vagin <avagin@virtuozzo.com>
parent b2473542
...@@ -178,8 +178,14 @@ int kdat_compatible_cr(void) ...@@ -178,8 +178,14 @@ int kdat_compatible_cr(void)
static int kdat_x86_has_ptrace_fpu_xsave_bug_child(void *arg) static int kdat_x86_has_ptrace_fpu_xsave_bug_child(void *arg)
{ {
ptrace(PTRACE_TRACEME, 0, 0, 0); if (ptrace(PTRACE_TRACEME, 0, 0, 0)) {
kill(getpid(), SIGSTOP); pr_perror("%d: ptrace(PTRACE_TRACEME) failed", getpid());
_exit(1);
}
if (kill(getpid(), SIGSTOP))
pr_perror("%d: failed to kill myself", getpid());
pr_err("Continue after SIGSTOP.. Urr what?\n"); pr_err("Continue after SIGSTOP.. Urr what?\n");
_exit(1); _exit(1);
} }
...@@ -243,7 +249,10 @@ int kdat_x86_has_ptrace_fpu_xsave_bug(void) ...@@ -243,7 +249,10 @@ int kdat_x86_has_ptrace_fpu_xsave_bug(void)
ret = !xsave.i387.mxcsr; ret = !xsave.i387.mxcsr;
out_kill: out_kill:
kill(child, SIGKILL); if (kill(child, SIGKILL))
waitpid(child, &stat, 0); pr_perror("Failed to kill my own child");
if (waitpid(child, &stat, 0) < 0)
pr_perror("Failed wait for a dead child");
return ret; return ret;
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment