diff options
author | Eric W. Biederman <ebiederm@xmission.com> | 2006-12-12 17:26:07 -0500 |
---|---|---|
committer | Eric Van Hensbergen <ericvh@gmail.com> | 2007-02-18 11:16:10 -0500 |
commit | 2c0463a9ae8751547c39302aeb31c6cef16b5df4 (patch) | |
tree | c79b99835f4b6ad9a47a58dab465f26908ba00ae /fs/9p | |
parent | 8a03d9a498eaf02c8a118752050a5154852c13bf (diff) |
9p: Use kthread_stop instead of sending a SIGKILL.
Since the kthread api does not bump the reference count on
processes that tracked it is not safe allow user space to
kill the threads, as I still retain a pointer to the task_struct.
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Acked-by: Eric Van Hensbergen <ericvh@gmail.com>
Diffstat (limited to 'fs/9p')
-rw-r--r-- | fs/9p/mux.c | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/fs/9p/mux.c b/fs/9p/mux.c index 147ceef8e537..c783874a9caf 100644 --- a/fs/9p/mux.c +++ b/fs/9p/mux.c | |||
@@ -256,7 +256,7 @@ static void v9fs_mux_poll_stop(struct v9fs_mux_data *m) | |||
256 | vpt->muxnum--; | 256 | vpt->muxnum--; |
257 | if (!vpt->muxnum) { | 257 | if (!vpt->muxnum) { |
258 | dprintk(DEBUG_MUX, "destroy proc %p\n", vpt); | 258 | dprintk(DEBUG_MUX, "destroy proc %p\n", vpt); |
259 | send_sig(SIGKILL, vpt->task, 1); | 259 | kthread_stop(vpt->task); |
260 | vpt->task = NULL; | 260 | vpt->task = NULL; |
261 | v9fs_mux_poll_task_num--; | 261 | v9fs_mux_poll_task_num--; |
262 | } | 262 | } |
@@ -438,11 +438,8 @@ static int v9fs_poll_proc(void *a) | |||
438 | 438 | ||
439 | vpt = a; | 439 | vpt = a; |
440 | dprintk(DEBUG_MUX, "start %p %p\n", current, vpt); | 440 | dprintk(DEBUG_MUX, "start %p %p\n", current, vpt); |
441 | allow_signal(SIGKILL); | ||
442 | while (!kthread_should_stop()) { | 441 | while (!kthread_should_stop()) { |
443 | set_current_state(TASK_INTERRUPTIBLE); | 442 | set_current_state(TASK_INTERRUPTIBLE); |
444 | if (signal_pending(current)) | ||
445 | break; | ||
446 | 443 | ||
447 | list_for_each_entry_safe(m, mtmp, &vpt->mux_list, mux_list) { | 444 | list_for_each_entry_safe(m, mtmp, &vpt->mux_list, mux_list) { |
448 | v9fs_poll_mux(m); | 445 | v9fs_poll_mux(m); |