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 | |
| 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>
| -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); |
