aboutsummaryrefslogtreecommitdiffstats
path: root/init
diff options
context:
space:
mode:
authorHeinrich Schuchardt <xypron.glpk@gmx.de>2015-04-16 15:47:44 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2015-04-17 09:04:06 -0400
commitff691f6e03815dc8f99461ea509df863a879fc3a (patch)
treeacc3b3c61ff40365d15cbe89952c743b301016af /init
parent3ea7f5e25ec271909451b7dc17be37581b888de6 (diff)
kernel/fork.c: new function for max_threads
PAGE_SIZE is not guaranteed to be equal to or less than 8 times the THREAD_SIZE. E.g. architecture hexagon may have page size 1M and thread size 4096. This would lead to a division by zero in the calculation of max_threads. With this patch the buggy code is moved to a separate function set_max_threads. The error is not fixed. After fixing the problem in a separate patch the new function can be reused to adjust max_threads after adding or removing memory. Argument mempages of function fork_init() is removed as totalram_pages is an exported symbol. The creation of separate patches for refactoring to a new function and for fixing the logic was suggested by Ingo Molnar. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Cc: Oleg Nesterov <oleg@redhat.com> Cc: Ingo Molnar <mingo@kernel.org> Cc: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'init')
-rw-r--r--init/main.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/init/main.c b/init/main.c
index a7e969d12f51..2115055faeac 100644
--- a/init/main.c
+++ b/init/main.c
@@ -91,7 +91,7 @@
91static int kernel_init(void *); 91static int kernel_init(void *);
92 92
93extern void init_IRQ(void); 93extern void init_IRQ(void);
94extern void fork_init(unsigned long); 94extern void fork_init(void);
95extern void radix_tree_init(void); 95extern void radix_tree_init(void);
96#ifndef CONFIG_DEBUG_RODATA 96#ifndef CONFIG_DEBUG_RODATA
97static inline void mark_rodata_ro(void) { } 97static inline void mark_rodata_ro(void) { }
@@ -645,7 +645,7 @@ asmlinkage __visible void __init start_kernel(void)
645#endif 645#endif
646 thread_info_cache_init(); 646 thread_info_cache_init();
647 cred_init(); 647 cred_init();
648 fork_init(totalram_pages); 648 fork_init();
649 proc_caches_init(); 649 proc_caches_init();
650 buffer_init(); 650 buffer_init();
651 key_init(); 651 key_init();