From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933403AbbBQJQL (ORCPT ); Tue, 17 Feb 2015 04:16:11 -0500 Received: from mout.gmx.net ([212.227.15.18]:61546 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933370AbbBQJQJ (ORCPT ); Tue, 17 Feb 2015 04:16:09 -0500 Message-ID: <54E30693.8030004@gmx.de> Date: Tue, 17 Feb 2015 10:14:59 +0100 From: Heinrich Schuchardt User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Icedove/31.4.0 MIME-Version: 1.0 To: Vladimir Davydov CC: Andrew Morton , "Kirill A. Shutemov" , Oleg Nesterov , Peter Zijlstra , Ingo Molnar , Thomas Gleixner , David Rientjes , Kees Cook , Aaron Tomlin , linux-kernel@vger.kernel.org Subject: Re: [PATCH 1/1] kernel/fork.c: avoid division by zero References: <1424109644-22579-1-git-send-email-xypron.glpk@gmx.de> <20150217075636.GJ28367@esperanza> In-Reply-To: <20150217075636.GJ28367@esperanza> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8bit X-Provags-ID: V03:K0:DQ/S7+8lBEe2NPwCCnQZonlP8JpKzWYGMlIRKw4GdMsrZ61Yx7D yt8tE5+yVfzCQ6lV1e0Aw/kskjjnseNojimUbHwt0hwJ1M3pItkv2SGV06oWdx/hcSohVkt pl9Ut3rmUhEAdUBEWmj3UPdw4nvaEc7vhlX5rm6+Pnaz6479l58xmvWTVevdJt3/4eUvzW1 YFNTYEXN5tegVoKncMXJA== X-UI-Out-Filterresults: notjunk:1; Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 17.02.2015 08:56, Vladimir Davydov wrote: > On Mon, Feb 16, 2015 at 07:00:44PM +0100, Heinrich Schuchardt wrote: >> diff --git a/kernel/fork.c b/kernel/fork.c >> index cf65139..71e2583 100644 >> --- a/kernel/fork.c >> +++ b/kernel/fork.c >> @@ -273,7 +273,8 @@ void __init fork_init(unsigned long mempages) >> * value: the thread structures can take up at most half >> * of memory. >> */ >> - max_threads = mempages / (8 * THREAD_SIZE / PAGE_SIZE); >> + max_threads = (u64) PAGE_SIZE * (u64) mempages >> + / (u64) THREAD_SIZE / 8UL; > > This won't compile for a 32 bit arch, will it? Should you use div_u64? > > Thanks, > Vladimir > Hello Vladimir, I compiled the kernel successfully with the patch on a 32bit arm system and Kernel 3.19.0. Obviously that was good luck. http://gcc.gnu.org/onlinedocs/gccint/Integer-library-routines.html describes that library function __udivti3 might be used on other platforms. And using library functions is not allowable in the kernel. Thank you for reviewing. I will update the patch. Best regards Heinrich