Messages in this thread | | | Date | Sun, 22 Feb 2015 08:58:25 +0100 | From | Ingo Molnar <> | Subject | Re: [PATCH 1/3 v3] kernel/fork.c: avoid division by zero |
| |
* Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
> 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 32-bit calculus there is no solution which delivers valid results > for all possible combinations of the parameters. > The code is only called once. > Hence a 64-bit calculation can be used as solution. > > The calculation of max_threads is moved to a separate function. > This allows future patches to use the same logic, e.g. when > - max_threads is set by writing to /proc/sys/kernel/threads-max > - when adding or removing memory. > > Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> > --- > kernel/fork.c | 59 ++++++++++++++++++++++++++++++++++++++++++----------------- > 1 file changed, 42 insertions(+), 17 deletions(-)
So it would be nice to split this patch into two parts: first do a patch that splits out a version of set_max_threads() that matches current behavior (including the bug).
Then a second patch that fixes the bug.
This would make it much easier to review.
Thanks,
Ingo
| |