aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorSatyam Sharma <ssatyam@cse.iitk.ac.in>2007-07-31 03:39:16 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-07-31 18:39:42 -0400
commite804a4a4dd596d853f6d6f814fbdcf97b8efcdea (patch)
tree8a19854d3ab326d7157065a72528db2bf91bce21 /kernel
parentbbe06f6bf7e764a9eb0e3cdcec2b12c743f35757 (diff)
kthread: silence bogus section mismatch warning
WARNING: kernel/built-in.o(.text+0x16910): Section mismatch: reference to .init.text: (between 'kthreadd' and 'init_waitqueue_head') comes because kernel/kthread.c:kthreadd() is not __init but calls kthreadd_setup() which is __init. But this is ok, because kthreadd_setup() is only ever called at init time, and then kthreadd() proceeds into its "for (;;)" loop. We could mark kthreadd __init_refok, but kthreadd_setup() with just one callsite and 4 lines in it (it's been that small since 10ab825bdef8df51) doesn't need to be a separate function at all -- so let's just move those four lines at beginning of kthreadd() itself. Signed-off-by: Satyam Sharma <ssatyam@cse.iitk.ac.in> Acked-by: Randy Dunlap <randy.dunlap@oracle.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'kernel')
-rw-r--r--kernel/kthread.c12
1 files changed, 2 insertions, 10 deletions
diff --git a/kernel/kthread.c b/kernel/kthread.c
index a404f7ee7395..dcfe724300eb 100644
--- a/kernel/kthread.c
+++ b/kernel/kthread.c
@@ -214,23 +214,15 @@ int kthread_stop(struct task_struct *k)
214} 214}
215EXPORT_SYMBOL(kthread_stop); 215EXPORT_SYMBOL(kthread_stop);
216 216
217 217int kthreadd(void *unused)
218static noinline __init_refok void kthreadd_setup(void)
219{ 218{
220 struct task_struct *tsk = current; 219 struct task_struct *tsk = current;
221 220
221 /* Setup a clean context for our children to inherit. */
222 set_task_comm(tsk, "kthreadd"); 222 set_task_comm(tsk, "kthreadd");
223
224 ignore_signals(tsk); 223 ignore_signals(tsk);
225
226 set_user_nice(tsk, -5); 224 set_user_nice(tsk, -5);
227 set_cpus_allowed(tsk, CPU_MASK_ALL); 225 set_cpus_allowed(tsk, CPU_MASK_ALL);
228}
229
230int kthreadd(void *unused)
231{
232 /* Setup a clean context for our children to inherit. */
233 kthreadd_setup();
234 226
235 current->flags |= PF_NOFREEZE; 227 current->flags |= PF_NOFREEZE;
236 228