aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVictor Hsieh <victorhsieh@google.com>2021-04-30 15:40:36 -0700
committerVictor Hsieh <victorhsieh@google.com>2021-04-30 15:46:26 -0700
commit1403606682541761bc74399e798e912969c7c886 (patch)
tree79741736340546628cd796d40bf3d47c8ab8538b
parent11395a6982fe8b09e3f2b0beb6c10e978266c4fa (diff)
downloadminijail-1403606682541761bc74399e798e912969c7c886.tar.gz
Don't log the warning for an expected kill
This is just to remove the log spam on the intentional kill like: libminijail[4120]: child process 4125 received signal 15 Bug: 171316742 Test: kill the jail with API, does not see warning Test: kill -9 from shell, still see the warning Change-Id: I5e9cb5637a539ce9a4cf3aa1d6ffd8750b46f881
-rw-r--r--libminijail.c35
1 files changed, 21 insertions, 14 deletions
diff --git a/libminijail.c b/libminijail.c
index e0d9d54..b09a05c 100644
--- a/libminijail.c
+++ b/libminijail.c
@@ -3349,18 +3349,7 @@ minijail_run_config_internal(struct minijail *j,
return ret;
}
-int API minijail_kill(struct minijail *j)
-{
- if (j->initpid <= 0)
- return -ECHILD;
-
- if (kill(j->initpid, SIGTERM))
- return -errno;
-
- return minijail_wait(j);
-}
-
-int API minijail_wait(struct minijail *j)
+static int minijail_wait_internal(struct minijail *j, int expected_signal)
{
if (j->initpid <= 0)
return -ECHILD;
@@ -3378,8 +3367,10 @@ int API minijail_wait(struct minijail *j)
int error_status = st;
if (WIFSIGNALED(st)) {
int signum = WTERMSIG(st);
- warn("child process %d received signal %d",
- j->initpid, signum);
+ if (signum != expected_signal) {
+ warn("child process %d received signal %d",
+ j->initpid, signum);
+ }
/*
* We return MINIJAIL_ERR_JAIL if the process received
* SIGSYS, which happens when a syscall is blocked by
@@ -3404,6 +3395,22 @@ int API minijail_wait(struct minijail *j)
return exit_status;
}
+int API minijail_kill(struct minijail *j)
+{
+ if (j->initpid <= 0)
+ return -ECHILD;
+
+ if (kill(j->initpid, SIGTERM))
+ return -errno;
+
+ return minijail_wait_internal(j, SIGTERM);
+}
+
+int API minijail_wait(struct minijail *j)
+{
+ return minijail_wait_internal(j, 0);
+}
+
void API minijail_destroy(struct minijail *j)
{
size_t i;