Skip to content

Commit

Permalink
net: pktgen: kill the "Wait for kthread_stop" code in pktgen_thread_w…
Browse files Browse the repository at this point in the history
…orker()

pktgen_thread_worker() doesn't need to wait for kthread_stop(), it
can simply exit. Just pktgen_create_thread() and pg_net_exit() should
do get_task_struct()/put_task_struct(). kthread_stop(dead_thread) is
fine.

Signed-off-by: Oleg Nesterov <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
  • Loading branch information
oleg-nesterov authored and davem330 committed Jul 9, 2015
1 parent fecdf8b commit 1fbe4b4
Showing 1 changed file with 2 additions and 9 deletions.
11 changes: 2 additions & 9 deletions net/core/pktgen.c
Original file line number Diff line number Diff line change
Expand Up @@ -3571,15 +3571,6 @@ static int pktgen_thread_worker(void *arg)
pr_debug("%s removing thread\n", t->tsk->comm);
pktgen_rem_thread(t);

/* Wait for kthread_stop */
for (;;) {
set_current_state(TASK_INTERRUPTIBLE);
if (kthread_should_stop())
break;
schedule();
}
__set_current_state(TASK_RUNNING);

return 0;
}

Expand Down Expand Up @@ -3771,6 +3762,7 @@ static int __net_init pktgen_create_thread(int cpu, struct pktgen_net *pn)
}

t->net = pn;
get_task_struct(p);
wake_up_process(p);
wait_for_completion(&t->start_done);

Expand Down Expand Up @@ -3893,6 +3885,7 @@ static void __net_exit pg_net_exit(struct net *net)
t = list_entry(q, struct pktgen_thread, th_list);
list_del(&t->th_list);
kthread_stop(t->tsk);
put_task_struct(t->tsk);
kfree(t);
}

Expand Down

0 comments on commit 1fbe4b4

Please sign in to comment.