summaryrefslogtreecommitdiffstats
path: root/arch/um/os-Linux/aio.c
diff options
context:
space:
mode:
authorRichard Weinberger <richard@nod.at>2013-08-18 13:30:08 +0200
committerRichard Weinberger <richard@nod.at>2013-09-07 10:56:58 +0200
commit91d44ff860a9e9c0db81a89cbc24fa31fbd8e6d3 (patch)
treebb14601ab3afbcec3cb8d7d0f207d09cfc792268 /arch/um/os-Linux/aio.c
parentbc1d72e73be63a7c4a07eb10cf51e91f20bf6076 (diff)
downloadop-kernel-dev-91d44ff860a9e9c0db81a89cbc24fa31fbd8e6d3.zip
op-kernel-dev-91d44ff860a9e9c0db81a89cbc24fa31fbd8e6d3.tar.gz
um: Cleanup SIGTERM handling
Richard reported that some UML processes survive if the UML main process receives a SIGTERM. This issue was caused by a wrongly placed signal(SIGTERM, SIG_DFL) in init_new_thread_signals(). It disabled the UML exit handler accidently for some processes. The correct solution is to disable the fatal handler for all UML helper threads/processes. Such that last_ditch_exit() does not get called multiple times and all processes can exit due to SIGTERM. Reported-and-tested-by: Richard W.M. Jones <rjones@redhat.com> Signed-off-by: Richard Weinberger <richard@nod.at>
Diffstat (limited to 'arch/um/os-Linux/aio.c')
-rw-r--r--arch/um/os-Linux/aio.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/arch/um/os-Linux/aio.c b/arch/um/os-Linux/aio.c
index 3a6bc2a..014eb35 100644
--- a/arch/um/os-Linux/aio.c
+++ b/arch/um/os-Linux/aio.c
@@ -104,8 +104,7 @@ static int aio_thread(void *arg)
struct io_event event;
int err, n, reply_fd;
- signal(SIGWINCH, SIG_IGN);
-
+ os_fix_helper_signals();
while (1) {
n = io_getevents(ctx, 1, 1, &event, NULL);
if (n < 0) {
@@ -173,7 +172,7 @@ static int not_aio_thread(void *arg)
struct aio_thread_reply reply;
int err;
- signal(SIGWINCH, SIG_IGN);
+ os_fix_helper_signals();
while (1) {
err = read(aio_req_fd_r, &req, sizeof(req));
if (err != sizeof(req)) {
OpenPOWER on IntegriCloud