diff options
author | Victor Hsieh <victorhsieh@google.com> | 2021-04-30 15:40:36 -0700 |
---|---|---|
committer | Victor Hsieh <victorhsieh@google.com> | 2021-04-30 15:46:26 -0700 |
commit | 1403606682541761bc74399e798e912969c7c886 (patch) | |
tree | 79741736340546628cd796d40bf3d47c8ab8538b | |
parent | 11395a6982fe8b09e3f2b0beb6c10e978266c4fa (diff) | |
download | minijail-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.c | 35 |
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; |