diff options
author | Benjamin Berg <benjamin.berg@intel.com> | 2024-09-19 14:45:05 +0200 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2024-10-10 13:37:21 +0200 |
commit | fdb2ecd35d327a1fc6bba69b97f85b494e1f4b6b (patch) | |
tree | 72863b08a547fd22394d0b4fa7876aaef71bb13e | |
parent | 801e00d3a1b78b7f71675fae79946ff4aa3ee070 (diff) |
um: Set parent death signal for winch thread/process
The winch "thread" is really a separate process. Using prctl to set
PR_SET_PDEATHSIG ensures that this separate thread will be killed if the
UML kernel itself dies unexpectedly and does not perform proper cleanup.
Signed-off-by: Benjamin Berg <benjamin.berg@intel.com>
Link: https://patch.msgid.link/20240919124511.282088-5-benjamin@sipsolutions.net
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
-rw-r--r-- | arch/um/drivers/chan_user.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/um/drivers/chan_user.c b/arch/um/drivers/chan_user.c index a66e556012c4..1434114b2f34 100644 --- a/arch/um/drivers/chan_user.c +++ b/arch/um/drivers/chan_user.c @@ -10,6 +10,7 @@ #include <signal.h> #include <termios.h> #include <sys/ioctl.h> +#include <sys/prctl.h> #include "chan_user.h" #include <os.h> #include <um_malloc.h> @@ -161,6 +162,8 @@ static __noreturn int winch_thread(void *arg) int count; char c = 1; + prctl(PR_SET_PDEATHSIG, SIGKILL); + pty_fd = data->pty_fd; pipe_fd = data->pipe_fd; count = write(pipe_fd, &c, sizeof(c)); |