From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 51475C54E60 for ; Sun, 17 Mar 2024 14:45:42 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D223B6B008A; Sun, 17 Mar 2024 10:45:41 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id CF83E6B008C; Sun, 17 Mar 2024 10:45:41 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BE6B66B0092; Sun, 17 Mar 2024 10:45:41 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id AFC2D6B008A for ; Sun, 17 Mar 2024 10:45:41 -0400 (EDT) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 784A4806EE for ; Sun, 17 Mar 2024 14:45:41 +0000 (UTC) X-FDA: 81906804882.22.01B0AF3 Received: from smtp.smtpout.orange.fr (smtp-23.smtpout.orange.fr [80.12.242.23]) by imf06.hostedemail.com (Postfix) with ESMTP id 7D697180017 for ; Sun, 17 Mar 2024 14:45:39 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=wanadoo.fr header.s=t20230301 header.b="R9nfu/8W"; dmarc=pass (policy=quarantine) header.from=wanadoo.fr; spf=pass (imf06.hostedemail.com: domain of christophe.jaillet@wanadoo.fr designates 80.12.242.23 as permitted sender) smtp.mailfrom=christophe.jaillet@wanadoo.fr ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1710686739; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=JFZ1VFuu4hUP4CMuNv45SyAr0XsYYQP18KS2flx8Fps=; b=VUcQuwj75MYxulcnpArCCfkuwvzyGfMsY1Gx0KsxDtiM87l8jNKxoht0onOgW4o0rua14Y JZaKainXET2LonlblaNyZIvfd5gckW8ppWGOuo2uCdPlmG2Jw0uRzlybJF0SmXbQlKzowZ HeYAMNqWIaikslQp4M7S8iYW/+IRC3s= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=wanadoo.fr header.s=t20230301 header.b="R9nfu/8W"; dmarc=pass (policy=quarantine) header.from=wanadoo.fr; spf=pass (imf06.hostedemail.com: domain of christophe.jaillet@wanadoo.fr designates 80.12.242.23 as permitted sender) smtp.mailfrom=christophe.jaillet@wanadoo.fr ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1710686739; a=rsa-sha256; cv=none; b=N3OxfIozfR3yBvMB18GPGRJms53IblUeVZWWD5raSwdE0b/RSC4gYQeALmL6hCmW1YNJLv ODRp4XuDz7cETLhG68WESeKLivV4vds1NdCZqOqpmaxBIufQMfJB9LPeW/QHg0QWG46ut1 CmWd7TZuOGQ+w7FoOhfMhoiJDYBX1wU= Received: from [192.168.1.18] ([92.140.202.140]) by smtp.orange.fr with ESMTPA id lrlLrJiu2k8gIlrlMrrLrr; Sun, 17 Mar 2024 15:45:37 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wanadoo.fr; s=t20230301; t=1710686737; bh=JFZ1VFuu4hUP4CMuNv45SyAr0XsYYQP18KS2flx8Fps=; h=Message-ID:Date:MIME-Version:Subject:To:From; b=R9nfu/8W4b6JIaUaGKmiF5SCYgPGcXhWXh9SQ9zsBvvFCY7h7vo3P3/w8SFXFSjmE uBm504uEL15KosVsO2o5s/ystqMswMi3o9AKkQMu7ZmYsEo72vPZg+ULRH6dgaVV/w uC0m2dP9PNH43p5XKhNYfgtOxu2/Yxys6/zmHUDCCQsPKKHvWEFFflPhwLOZWWAGSy auTabFtkDZ0q/pGmA0Peg/Mh5cIopoPk4VTS0gLlVb2ZiTBClT7wfHmYSgShLCk3i6 D9H31RYsgUuUalCYJexgub00ABbcuZAwW4w6YqHVrU2Hxjrq6VamSteTtVieitucjV /k3EZIurCRXjw== X-ME-Helo: [192.168.1.18] X-ME-Auth: Y2hyaXN0b3BoZS5qYWlsbGV0QHdhbmFkb28uZnI= X-ME-Date: Sun, 17 Mar 2024 15:45:37 +0100 X-ME-IP: 92.140.202.140 Message-ID: <0c6974b4-ba1f-474c-aed4-6c06d26ddb0a@wanadoo.fr> Date: Sun, 17 Mar 2024 15:45:23 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [RFC 04/14] fork: Remove assumption that vm_area->nr_pages equals to THREAD_SIZE Content-Language: en-MW To: Pasha Tatashin , linux-kernel@vger.kernel.org, linux-mm@kvack.org, akpm@linux-foundation.org, x86@kernel.org, bp@alien8.de, brauner@kernel.org, bristot@redhat.com, bsegall@google.com, dave.hansen@linux.intel.com, dianders@chromium.org, dietmar.eggemann@arm.com, eric.devolder@oracle.com, hca@linux.ibm.com, hch@infradead.org, hpa@zytor.com, jacob.jun.pan@linux.intel.com, jgg@ziepe.ca, jpoimboe@kernel.org, jroedel@suse.de, juri.lelli@redhat.com, kent.overstreet@linux.dev, kinseyho@google.com, kirill.shutemov@linux.intel.com, lstoakes@gmail.com, luto@kernel.org, mgorman@suse.de, mic@digikod.net, michael.christie@oracle.com, mingo@redhat.com, mjguzik@gmail.com, mst@redhat.com, npiggin@gmail.com, peterz@infradead.org, pmladek@suse.com, rick.p.edgecombe@intel.com, rostedt@goodmis.org, surenb@google.com, tglx@linutronix.de, urezki@gmail.com, vincent.guittot@linaro.org References: <20240311164638.2015063-1-pasha.tatashin@soleen.com> <20240311164638.2015063-5-pasha.tatashin@soleen.com> From: Christophe JAILLET In-Reply-To: <20240311164638.2015063-5-pasha.tatashin@soleen.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Rspam-User: X-Stat-Signature: jmhhtxf7c56dm3x1irtkniomhjntf87i X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 7D697180017 X-HE-Tag: 1710686739-391108 X-HE-Meta: U2FsdGVkX1/c4WnoucpSq3zsiPBwFGjWQKNK4oD2B8EnQie9RYHPdP0Xw9NXLgv3/ehhFDmBdXN3MXjaEsco4nrFHirrxjoUOnrA0rA9ub0cwxORlTnGz6Ua8nMAjXwd3Xb6KPkgzudKDHa5yH1aJqsq2wJUOqSOtBmOiUIbukJsN7HGMxjpvPWF7Qcubt8M+kYQ4UPEiv9NW6llnbsVGDAQreecAsohcgLsxTWnPosoe8ehv2w04w9z+ofnhPF7v00xGqO8pf6Fkxfgr8vcXOwxVuhP1vrSmI+eMdiVh/i608A9UofxxrbNjLsmxZcehf0moXNBQ24P0S0ihpEouMZmXkNxyU/dmHF+uVGUrmZ7FTz+4e8Xt3wyMVgRUMQeRtOB965wmiCJxMoQrSEJuwJvrtJzZNlwMXlG/4DEY42d8/q7zAnLiOk3USQXB456FuK0ICMaomstLITsD5GpInXoX6X+x7zXGFXoj8qoByKW6FEgxAoxmSixmOyfxnWBzu38avY1QwkOB050CcwUvH0eRL1dVhwio3ciBrcpN1Qq8xJtC9VZIcSQf+byaI7plysTE2tW0EdHYH9BD9bzNXeG3wEJylzZyza84xcDJ9+jTO4Usx/VM4H9CNXfvNfluo7uaFqm0+GMN0r3RxjVsfG4yDIDPYOQW5/CNEbS/s0+NRXvw4OQeBtzeGbwEglr6o0GkjQM9ZdXicHd6RpPsngnr4JojGyUD24R0X7KWWc1XvHvnLKQjOgs6Vg+M4OsGtsB1F0KriCUeCqCHtK9XAqIg3nDQapkgiJPO9QGleiN1jFQRnnH+V3pJpZXW1gz9SDtecK8V/VWUM1pIT4iddmSGWi9MPr4sGTFUp9gX66BstJ71izWHuvGcIiCWKRG20aeJjOIpiKq1MWoU29jFFDBlQukwabyZ6taBpfW70u8dg4bRaUqJ6eijc42yPVh6INzqCZYQ+mxej8TVFY Df6mbdCc BTxfTmf3qFIZ4Hy0UKlq+cBInSYXaZJMn04kHUFNNqjPYSnEL0Ow52dkwM/7xdIEC+mI1RIWDbgGLoCj90gBzctKBHAzk9vuINQUAZ3l02l9uP/TiSKihsGJX44HKH/Mf4zSzSrvn7au1sNxwVIY8gN65585D3YJbcnaeYOuwurisBLSs3yLxvvPaBEgTKHUs3XCMrYX/GlqgQP3CDoHUWEqhltVaVnpKeyz7mIi0+ZGe8dt91uAlv7fDG/vTW/p/KntLNLEr4BBkUcxRndayRhb6c7xS0T6NegEKDc8X5a8k0HyzA4PRlGvDj8MkOuvFppIjwvZbEbnd53mCgHTgGHyerDKNg8AdwZXN3WUxTxWlEeH+hwZcc0qj35stOvZEgW6Ic0OvEvK1zrp7nR2ROuFgz33Ho+7erqAOKwOl8+0MucY= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000295, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Le 11/03/2024 à 17:46, Pasha Tatashin a écrit : > In many places number of pages in the stack is detremined via > (THREAD_SIZE / PAGE_SIZE). There is also a BUG_ON() that ensures that > (THREAD_SIZE / PAGE_SIZE) is indeed equals to vm_area->nr_pages. > > However, with dynamic stacks, the number of pages in vm_area will grow > with stack, therefore, use vm_area->nr_pages to determine the actual > number of pages allocated in stack. > > Signed-off-by: Pasha Tatashin > --- > kernel/fork.c | 18 +++++++++--------- > 1 file changed, 9 insertions(+), 9 deletions(-) > > diff --git a/kernel/fork.c b/kernel/fork.c > index 60e812825a7a..a35f4008afa0 100644 > --- a/kernel/fork.c > +++ b/kernel/fork.c > @@ -243,13 +243,11 @@ static int free_vm_stack_cache(unsigned int cpu) > > static int memcg_charge_kernel_stack(struct vm_struct *vm) Maybe s/vm/vm_area/ as done in 03/14? CJ > { > - int i; > - int ret; > + int i, ret, nr_pages; > int nr_charged = 0; > > - BUG_ON(vm->nr_pages != THREAD_SIZE / PAGE_SIZE); > - > - for (i = 0; i < THREAD_SIZE / PAGE_SIZE; i++) { > + nr_pages = vm->nr_pages; > + for (i = 0; i < nr_pages; i++) { > ret = memcg_kmem_charge_page(vm->pages[i], GFP_KERNEL, 0); > if (ret) > goto err; > @@ -531,9 +529,10 @@ static void account_kernel_stack(struct task_struct *tsk, int account) > { > if (IS_ENABLED(CONFIG_VMAP_STACK)) { > struct vm_struct *vm = task_stack_vm_area(tsk); > - int i; > + int i, nr_pages; > > - for (i = 0; i < THREAD_SIZE / PAGE_SIZE; i++) > + nr_pages = vm->nr_pages; > + for (i = 0; i < nr_pages; i++) > mod_lruvec_page_state(vm->pages[i], NR_KERNEL_STACK_KB, > account * (PAGE_SIZE / 1024)); > } else { > @@ -551,10 +550,11 @@ void exit_task_stack_account(struct task_struct *tsk) > > if (IS_ENABLED(CONFIG_VMAP_STACK)) { > struct vm_struct *vm; > - int i; > + int i, nr_pages; > > vm = task_stack_vm_area(tsk); > - for (i = 0; i < THREAD_SIZE / PAGE_SIZE; i++) > + nr_pages = vm->nr_pages; > + for (i = 0; i < nr_pages; i++) > memcg_kmem_uncharge_page(vm->pages[i], 0); > } > }