On Tue, 24 Feb 2015, Heinrich Schuchardt wrote:

> diff --git a/init/main.c b/init/main.c
> index 61b99376..21394ec 100644
> --- a/init/main.c
> +++ b/init/main.c
> @@ -94,7 +94,7 @@
>  static int kernel_init(void *);
>  
>  extern void init_IRQ(void);
> -extern void fork_init(unsigned long);
> +extern void fork_init(void);
>  extern void radix_tree_init(void);
>  #ifndef CONFIG_DEBUG_RODATA
>  static inline void mark_rodata_ro(void) { }
> @@ -655,7 +655,7 @@ asmlinkage __visible void __init start_kernel(void)
>  #endif
>       thread_info_cache_init();
>       cred_init();
> -     fork_init(totalram_pages);
> +     fork_init();
>       proc_caches_init();
>       buffer_init();
>       key_init();
> diff --git a/kernel/fork.c b/kernel/fork.c
> index 4dc2dda..460b044 100644
> --- a/kernel/fork.c
> +++ b/kernel/fork.c
> @@ -253,7 +253,27 @@ EXPORT_SYMBOL_GPL(__put_task_struct);
>  
>  void __init __weak arch_task_cache_init(void) { }
>  
> -void __init fork_init(unsigned long mempages)
> +/*
> + * set_max_threads
> + * The argument is ignored.
> + */
> +static void set_max_threads(unsigned int max_threads_suggested)
> +{
> +     /*
> +      * The default maximum number of threads is set to a safe
> +      * value: the thread structures can take up at most half
> +      * of memory.
> +      */
> +     max_threads = totalram_pages / (8 * THREAD_SIZE / PAGE_SIZE);
> +
> +     /*
> +      * we need to allow at least 20 threads to boot a system
> +      */
> +     if (max_threads < 20)
> +             max_threads = 20;
> +}
> +
> +void __init fork_init(void)
>  {
>  #ifndef CONFIG_ARCH_TASK_STRUCT_ALLOCATOR
>  #ifndef ARCH_MIN_TASKALIGN
> @@ -268,18 +288,7 @@ void __init fork_init(unsigned long mempages)
>       /* do the arch specific task caches init */
>       arch_task_cache_init();
>  
> -     /*
> -      * The default maximum number of threads is set to a safe
> -      * value: the thread structures can take up at most half
> -      * of memory.
> -      */
> -     max_threads = mempages / (8 * THREAD_SIZE / PAGE_SIZE);
> -
> -     /*
> -      * we need to allow at least 20 threads to boot a system
> -      */
> -     if (max_threads < 20)
> -             max_threads = 20;
> +     set_max_threads(UINT_MAX);
>  
>       init_task.signal->rlim[RLIMIT_NPROC].rlim_cur = max_threads/2;
>       init_task.signal->rlim[RLIMIT_NPROC].rlim_max = max_threads/2;

I'm afraid I don't understand this.  The intent of the patch is to 
separate the max_threads logic into a new function, correct?  If that's 
true, then I don't understand why UINT_MAX is being introduced into this 
path and passed to the new function when it is ignored.

I think it would be better to simply keep passing mempages to fork_init() 
and then pass it to set_max_threads() where max_threads actually gets set 
using the argument passed.  At least, the code would then match the intent 
of the patch.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to