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 028E5C3ABAC for ; Tue, 6 May 2025 07:58:09 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0FE026B0088; Tue, 6 May 2025 03:58:03 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 084876B0089; Tue, 6 May 2025 03:58:03 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E8CAD6B008A; Tue, 6 May 2025 03:58:02 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id C98C66B0088 for ; Tue, 6 May 2025 03:58:02 -0400 (EDT) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 36203584C7 for ; Tue, 6 May 2025 07:58:04 +0000 (UTC) X-FDA: 83411729688.03.CB65327 Received: from mail-lf1-f50.google.com (mail-lf1-f50.google.com [209.85.167.50]) by imf13.hostedemail.com (Postfix) with ESMTP id 669EF20006 for ; Tue, 6 May 2025 07:58:02 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=linaro.org header.s=google header.b=w8je9x8f; spf=pass (imf13.hostedemail.com: domain of linus.walleij@linaro.org designates 209.85.167.50 as permitted sender) smtp.mailfrom=linus.walleij@linaro.org; dmarc=pass (policy=none) header.from=linaro.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1746518282; 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=/JPAmPypGATO8yGl2fqoiGfbjaHVspCbybkvY4SchrE=; b=CEmstJ6Hu2kaKTwEFLnYUPUW3GKvFJPl3snfo5sd12MXePp7afm+HInyF3p7DcNsGLo0ea bU4LbZe/N43gEv6+XRTHMk+8kYe9P/3Gy0QKanhGgVLKgLFp1MAn6Z81K4efAdflVeNDhN id9Ddh3BY6nVAsiAoR4t+isL+ToFjPM= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=linaro.org header.s=google header.b=w8je9x8f; spf=pass (imf13.hostedemail.com: domain of linus.walleij@linaro.org designates 209.85.167.50 as permitted sender) smtp.mailfrom=linus.walleij@linaro.org; dmarc=pass (policy=none) header.from=linaro.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1746518282; a=rsa-sha256; cv=none; b=2/SdZVuMLGea1J1n725m41YHH/FyPiqsQLAuXKYfq/rBZT0BKhPmpGcx+AEOmLz2ZM9E77 K2L9pUnFJQKesXdJRELUJLeZmuwZLJTUMX0xXUY6BUkLwX8Vke+UdpLBH6m8NYaeBqUjhd jsRN7jySDbVlPglAJu9C8trnV2U8qhE= Received: by mail-lf1-f50.google.com with SMTP id 2adb3069b0e04-54e9021d2b5so7950152e87.1 for ; Tue, 06 May 2025 00:58:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1746518280; x=1747123080; darn=kvack.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=/JPAmPypGATO8yGl2fqoiGfbjaHVspCbybkvY4SchrE=; b=w8je9x8fPigKC+c26mAfU+OtqDenACgp5Uh1GwH5rEMig8n9yhvPatJnzlZomMmE4m APsnIWnBYfdh2sy1TjGEyf0qNmmZk0L5kgCwqcEQDPdvIsBrC7arnMw1byru9A3CDSe4 uL84vwE3n3sE2eBYgxrzhHCwI7U2rQvUbSTr/03OWzXzgr8IZ8oNVTV5nky6fweKeko2 1WU6h4TUB5oWsq1W9VuJb+XaMAQwqN3shIq7SbKW9rys3PBEg7udZzjkX9cqLvew8Xz6 cUMXs8eWigHv3ZyH5KPCTqpZxBeCn4XlEBDupbw7nZq2EXH1TxG+aXRf/lzYpBxfkmKF Fz6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746518280; x=1747123080; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/JPAmPypGATO8yGl2fqoiGfbjaHVspCbybkvY4SchrE=; b=PLCb7CZx6NXKdxi4NlbHgJU+zpMshU7SOu/BldwHpj62zOxKehbUOwaSqBQJQHPifT Tm2vz8kcUnyEG8LrgytDcVsEQMJlhRGW5R3XQ8ByFyVEDV1pzAOSINvRC+EULKUANz4s e+rWpn67N+V356XKA9zEpHplIL9G7M6/VppiJJI9R9S2aKIJ/td8nMDBMf5LPgbgjvQV NUbQnNkYYEw096zqU8RxRFYLQgsNf6NwmLG68h9/2K0I+l5WqhfsZPPP1q+ho7abBoXR 1hCv88eN1pkXJOWSvJBCjsX2XCjJWYM4a8lnFE0WShz7eAlTSi8RWeruIm5vKEuyguq6 +HSw== X-Forwarded-Encrypted: i=1; AJvYcCWORWxI3/vdDHyjLutP9S35PohOxCqz3Jaxz5zFX8wtdUu1ZmXaLY7CQL4/pRKwkW4k6SIcpJV7bQ==@kvack.org X-Gm-Message-State: AOJu0YyonzAANWr8XEOspWv0R/11Pg0dsRDdaj2vu9WhAhqYWLnKTPTe TJoKgLmVVhDhHj65r5zRh6Y/p2g9e2Ndy4hWU9ReUCsrJ4zaN5reL9ky1wsJ7GAqNqChB3wsLS9 E X-Gm-Gg: ASbGncs8inqEu1rlfKSaykofkeIMWw6PwYe87pFdssTIgQNhui5b+EkyTjKdkg5ydUP SGJCQnbwysEcnj6qIOkF2CZzG/0L7JmTtalkks18C6j+wpupxTFfxkVt6wOZM59Zdj9kEala28z ViY+SdRIdbTOTz3XMkn0/hm04mJ6wdmdigiupqRTFU09ql1SYwoiHWW79zFQYZoBwwyWaNBR2rb kri/nv8UdPlWj9OX+C2ZYesV4QBcT4Lv1hCgTRW6wd3HdquJkxAHYfZDSyNzgW3ZNfSy/42GFto BUVrPERQ0OuRjjs+HxWDcT4D7svgYeLvIBSeAktMsjfYwkOlqTk= X-Google-Smtp-Source: AGHT+IFFK/qFppPLoAnA8ZkkGsfD8c0c/OnzxsEIUUETo4Z/tCPXHfJRyCFl7V3EClfESy5pcFtjBg== X-Received: by 2002:a05:6512:3d0e:b0:549:5769:6af6 with SMTP id 2adb3069b0e04-54fb4615818mr760767e87.9.1746518279847; Tue, 06 May 2025 00:57:59 -0700 (PDT) Received: from [192.168.1.140] ([85.235.12.238]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-54ea94ee0efsm1990757e87.158.2025.05.06.00.57.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 May 2025 00:57:59 -0700 (PDT) From: Linus Walleij Date: Tue, 06 May 2025 09:57:55 +0200 Subject: [PATCH 3/5] fork: Remove assumption that vm_area->nr_pages equals to THREAD_SIZE MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20250506-fork-fixes-v1-3-bd35b63f0f1b@linaro.org> References: <20250506-fork-fixes-v1-0-bd35b63f0f1b@linaro.org> In-Reply-To: <20250506-fork-fixes-v1-0-bd35b63f0f1b@linaro.org> To: Andrew Morton , linux-mm@kvack.org, Pasha Tatashin Cc: Linus Walleij X-Mailer: b4 0.14.2 X-Stat-Signature: epe47iazi5jgowaswqifyc5z9u7mhwbs X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: 669EF20006 X-Rspam-User: X-HE-Tag: 1746518282-78074 X-HE-Meta: U2FsdGVkX1+Fiyqg4QWRw14fD+sg87zFqtMuHaK4FrNAaV8LCF1M1s3/fqGwtSZzDhGeL7MQRxeaY4Cect20tV1luZGLw0ajffDwS7CJzJMM0qPoOrFH53v9AXEhniiWsqnCMaFpd0wT782tqEDWy3Eer4KysJMQz6reX4yfADiOMXmzVqKKUmXt6aCf00AHLcfagOnizEHKJMw869c1y/F9tY/rjCLF1IGtQaoWnOyWShCVk9wX7zf3hivGcG7p/fju7Jbli1uVs/gzUiToE2nQq7nTDqbGi3wUWiHn9VGCUe1ak1sAm7UrP0fG2UAcnIfd3YXZTes0HG/ktlPuJgXnE7rWmTRwOArN20tjHG6L0a95N8sN0wTVBNgpg0XUYGxL9zCA7iYk8HcxlHmNGyV7HmzqeSMWE7fsd21a7HPnKgbYsQwJ+fNUN1xxY99DQ2y8YJPghKt9NtIj+cttDuc9T7E36KKbyOK0UiSKAjMy1mKdVnic38UShKcXFg5xIkGTvmvRClpDvEcoIlWnoMVvZu7sOgCtYqMPHJpB6gncPruFNEMlaK3JFszaSNrbhTMz1zvxH28QblJ2wAGTJ5wzWeUKhD51vKwWVGQVDnNSA1J4EXxkyHkY/apoOJpMKUeiWpwgfrGmipzLvyfJgYeB/ynCn+TV8MCY3nOFHpWMeRHQ0CyFjQAQHhhkJBze+zpyuRbRYeciklKbZcqamAtx+PaHDjyQbf8+srSdKHciJZ65w5CtRKQRGTtHJ91GI7TxAx8eurN3fa1cJPA3bYOxmu/ijdCWLW6witZAc4gPM71LPq+G+Qn4poPJTkq2I7x6au1Fq0PeI3Nfm3X7HgD1XPUHrbptqJ9bKNYVHvIRkJfzp5hjslWfZlwZCom+HBS+CfQknk69h6YVj8ZFqhQxNFPIIz0tLLMJvy1LJXuiE6sVf1jqmTOOdwmax2y2y7+5NC4VSSQ9KyLIJ9Y EWpX/4xV wg98gdKjLzV/yLTJH/Wt4B5UFzQ== 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: 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] Signed-off-by: Linus Walleij --- kernel/fork.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/kernel/fork.c b/kernel/fork.c index 3bed36a56292e3b868895dac169266c428f8c1ff..02943c14ee3b932db11cd9292051fdf5ce381a38 100644 --- 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++) { 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 { @@ -539,7 +537,7 @@ void exit_task_stack_account(struct task_struct *tsk) int i; vm_area = task_stack_vm_area(tsk); - for (i = 0; i < THREAD_SIZE / PAGE_SIZE; i++) + for (i = 0; i < vm_area->nr_pages; i++) memcg_kmem_uncharge_page(vm_area->pages[i], 0); } } -- 2.49.0