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 A18DAC3ABBE for ; Wed, 7 May 2025 01:53:27 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BB2346B0089; Tue, 6 May 2025 21:53:25 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B6AB86B0092; Tue, 6 May 2025 21:53:25 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A4ECB6B0093; Tue, 6 May 2025 21:53:25 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 85DAE6B0089 for ; Tue, 6 May 2025 21:53:25 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 7663D80AC0 for ; Wed, 7 May 2025 01:53:26 +0000 (UTC) X-FDA: 83414439612.30.F8AE0E0 Received: from sea.source.kernel.org (sea.source.kernel.org [172.234.252.31]) by imf15.hostedemail.com (Postfix) with ESMTP id A660BA0006 for ; Wed, 7 May 2025 01:53:24 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=korg header.b=sjblx7gu; dmarc=none; spf=pass (imf15.hostedemail.com: domain of akpm@linux-foundation.org designates 172.234.252.31 as permitted sender) smtp.mailfrom=akpm@linux-foundation.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1746582804; a=rsa-sha256; cv=none; b=G/KpL5bq7iQHTGsHVSlfPS11ZVWN6s0ELYda8j5/kFFdzPd1Mtmgm1BbY6SExegPdlDCJu kTJEXe/dE0ehxk3TzUoaCUWX5CJ5dt5Cfr2aBtr4/Cb0BkzwWnqFaEutlXcMZF3Mzqj/RB Hf84RDhHvCoo+24PXZqO6O28TmRsRMA= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=korg header.b=sjblx7gu; dmarc=none; spf=pass (imf15.hostedemail.com: domain of akpm@linux-foundation.org designates 172.234.252.31 as permitted sender) smtp.mailfrom=akpm@linux-foundation.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1746582804; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc: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=btObjyPMGbdMBf1eHQmNP/i/QqXxmANMwtdvB2Z6W/0=; b=LqgddEHYnmD8eN4D9efa5GFcbY+zT/Le2IaE6VJSktM1/c08de6x4YotpdbP4ZlYvV52/R cXgUi2sXqmMBtrHy/uSVZ4jbPM3eBQDTqlZqTNWpdyXBf5tDbhL1RK7reqaw0p4cZkm3p9 EiIWo/WfbpExMysjwYgAu8suxw4CQOg= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sea.source.kernel.org (Postfix) with ESMTP id 3AAC24532C; Wed, 7 May 2025 01:53:23 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id F317DC4CEE4; Wed, 7 May 2025 01:53:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linux-foundation.org; s=korg; t=1746582803; bh=Zb5uJR52gHA9D4eNtko5trXEmQLJ9U9rYd3D/mf8feE=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=sjblx7gumkPVP/Ii10iFpB3f0K/AGtxayJo+PZACR7VyaKONzGvjr3M7jokyr/NFY LCb41zeu9fOC/niOtX9/6e81LWukCe922YWwFo9Db/M8efcFuJilN+PRuIbpbz0ov4 d95QtFgMJK3mi+trvljhqPOCm7Uf/8r2dOY6YR30= Date: Tue, 6 May 2025 18:53:22 -0700 From: Andrew Morton To: Linus Walleij Cc: linux-mm@kvack.org, Pasha Tatashin Subject: Re: [PATCH 3/5] fork: Remove assumption that vm_area->nr_pages equals to THREAD_SIZE Message-Id: <20250506185322.cd87ba823030024061b5ae77@linux-foundation.org> In-Reply-To: <20250506-fork-fixes-v1-3-bd35b63f0f1b@linaro.org> References: <20250506-fork-fixes-v1-0-bd35b63f0f1b@linaro.org> <20250506-fork-fixes-v1-3-bd35b63f0f1b@linaro.org> X-Mailer: Sylpheed 3.8.0beta1 (GTK+ 2.24.33; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: A660BA0006 X-Stat-Signature: qkjce1ry9nou68r633swg18gnzc4s9ox X-Rspam-User: X-HE-Tag: 1746582804-817115 X-HE-Meta: U2FsdGVkX189eQUNxZYZPVu1N5DO7LDs9OZPLX6Yr4Xd31xEK1XdRB4BqvVNNjr6aH5MlctsOUki5sRK8LDJtiBepio56Hn34mDgKs6Gw2Pq+Linvo6TBOjTvbG48Ud3XesFUE3P/7vUJLDiKB6fY5KSQfthdPgPQ5VdAs2Sqck+HDG7icfZBpBXsm6WtpQsC7P2SchGIKRpI2/leAN3C3NfacaXArBp4yynJxUB7bLDyxEtUnPnAD2oT3jl17cZ4naC4ZQayGlxIPdtCLID4aq5pU33Z5MxQZ1ozLuNYH1bPIbOCSNNo6mVF+iZ7Opg4m9ASd4ndliaLVn7xyVHeXZE2gvmRj63/i3RHXJaaxVscaENbe4whpoFm8SdQUQ2tGs24VsoHAWMpF1qBAIfdwUqXIZiqu/V9FdgyiJ2YE7CgE43A5aA8a6WpaljN6W6c2ZEbSek0E85Fx8zCKTHtxP2XbA4Z27V/1rq4Jp3YLGHnfhS30n89tRa3/2HxfVgrLdyCd6RsS/1drM5yRswKyoT3OIFvyHR3WWOr1qL/zFcFUXzxlTzmrFHMOnoIqVhs/+uvBZvsDeY6NAaIp3oNfl24vawf91r7JuVxC9a20JlAWpOZSBNaRKbcIWIt2fKA6cNBkVqe5Ynz9ZdiYzS37/u9IFeB4kOiPQs06WF89+wspaKsGPxnxtihV9xtd+Qg6P8l9ZiVTSXLIhpfseQKnQGebiqGCZF8oVTTDNQ0Gkl4IvtLMRSsz+/0qKO3QtdvRcfR92TlIlsKBnFJXdYSmx1xQota4c/cg/wLJ4E1nHPvtR2ZFNGwmUSJzpy7ITToS0Gclwk7PgxxVHr5R7QWmIE0PhgP73+3MCI1kjGyXBgshOyrCygFN8S7hEAiNBFEnc0zidodJOHNLLFVgcAlLZarqVHlQx84phygNBlg98d785dxQAKh+ldokeVLcFFFLbA4fQLNQ640KY6Lip u2qV3+kM TthGPxzL0h8dxzUkIFLL5UGsHNfpJXmtqarCSOCMT76+CtJNcKczIBfGDz7g4b4aNSt4Y7XN1tDcdX/y2D8XmYiHNstpi4hS6oTawYCcaPLj5NsZJvPUCw1Twjtt2iy0T2d9QQKjd2ENLOaNqrA3oy9ZUG1BilTqy5TptYci5gISrghQRBhqYDmRfl6iwRT1VkwOP5+mXNBcUXtAEqTF1ktNC3wOA+fSdUzeHD/5e3vY5d1aMHmAyAiUDE7r0njkCogSlZScgsWkl8Wd/NzYKbEoq9yJCWok1AtkQQ4GGmerX1pKFANBXj0yZeuaQnqcFAwlpNeyuWH5xJO01hnYOQUI1wGSVnUylus3RWYLEoHij3ImWMEjiM0dIAmW7kCGZFcklqVSBQrAP0+oG3wbcZ9+jGU+nAI+9pnJTqnE9Ayap1mJDrqavcVo4QQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Tue, 06 May 2025 09:57:55 +0200 Linus Walleij wrote: > From: Pasha Tatashin > > 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 equal to vm_area->nr_pages. > > Consistently use vm_area->nr_pages to determine the actual number > of pages allocated in the stack instead, so it is clear what is > going on here. > > Signed-off-by: Pasha Tatashin > Link: https://lore.kernel.org/20240311164638.2015063-5-pasha.tatashin@soleen.com > [Rebased, also skipped intermediary helper variable nr_pages] I like [linus.walleij@linaro.org: rebased, also skipped intermediary helper variable nr_pages] > --- a/kernel/fork.c > +++ b/kernel/fork.c > @@ -254,9 +254,7 @@ static int memcg_charge_kernel_stack(struct vm_struct *vm_area) > int ret; > int nr_charged = 0; > > - BUG_ON(vm->nr_pages != THREAD_SIZE / PAGE_SIZE); > - > - for (i = 0; i < THREAD_SIZE / PAGE_SIZE; i++) { > + for (i = 0; i < vm_area->nr_pages; i++) { Well, constants are fast and small. I assume this will add a few instructions and a bit of runtime overhead? > ret = memcg_kmem_charge_page(vm_area->pages[i], GFP_KERNEL, 0); > if (ret) > goto err; > @@ -518,7 +516,7 @@ static void account_kernel_stack(struct task_struct *tsk, int account) > struct vm_struct *vm_area = task_stack_vm_area(tsk); > int i; > > - for (i = 0; i < THREAD_SIZE / PAGE_SIZE; i++) > + for (i = 0; i < vm_area->nr_pages; i++) > mod_lruvec_page_state(vm_area->pages[i], NR_KERNEL_STACK_KB, > account * (PAGE_SIZE / 1024)); > } else {