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 0C178C3ABC3 for ; Fri, 9 May 2025 07:25:18 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4A80B6B00AD; Fri, 9 May 2025 03:25:17 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 456706B00AE; Fri, 9 May 2025 03:25:17 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 31FF46B00AF; Fri, 9 May 2025 03:25:17 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 139A26B00AD for ; Fri, 9 May 2025 03:25:17 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id C2541C11F8 for ; Fri, 9 May 2025 07:25:17 +0000 (UTC) X-FDA: 83422533474.29.3287B8D Received: from mail-lj1-f169.google.com (mail-lj1-f169.google.com [209.85.208.169]) by imf01.hostedemail.com (Postfix) with ESMTP id AD33F4000B for ; Fri, 9 May 2025 07:25:15 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=linaro.org header.s=google header.b=GIg2KtOh; dmarc=pass (policy=none) header.from=linaro.org; spf=pass (imf01.hostedemail.com: domain of linus.walleij@linaro.org designates 209.85.208.169 as permitted sender) smtp.mailfrom=linus.walleij@linaro.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1746775515; a=rsa-sha256; cv=none; b=XC41UMNA+Kjfjyx4OvCUX9pmPs2VDH+RJ/RoRWyMTVxCxMLlivgANdz7LeN0p2sq4Fyhy+ RR6uhWIqbhK7oQVgASxtdwIYWW00ZS5o9oue8eJymm32Wwb3//p7wrXLl+akeW7AkRKb0r CYJTLi1ySDudqeDRSYO2YfY59ekSxdw= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=linaro.org header.s=google header.b=GIg2KtOh; dmarc=pass (policy=none) header.from=linaro.org; spf=pass (imf01.hostedemail.com: domain of linus.walleij@linaro.org designates 209.85.208.169 as permitted sender) smtp.mailfrom=linus.walleij@linaro.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1746775515; 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: references:dkim-signature; bh=W3DwS3XecWfHq+U2C4T1tkTPruKWMWCjCoYpl3Qg9L0=; b=ta7tqJUYGX/1TkDftF1mKVCVcQMOG2rQLPmgwSoK8WGmoFSZd/14Hnrq+2LHiyP5SparBQ 0DzzDIF5wY35jUfsKG6cgoDp/HV2E9Rh5TCx5QKuCbx0jzUH40S+TQhdgvVA+0rtJOf1wc AMrWDRBWbYRau9y0R1O85IGsc5d8Mpc= Received: by mail-lj1-f169.google.com with SMTP id 38308e7fff4ca-30effbfaf61so21818761fa.0 for ; Fri, 09 May 2025 00:25:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1746775514; x=1747380314; darn=kvack.org; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:from:to:cc:subject:date:message-id:reply-to; bh=W3DwS3XecWfHq+U2C4T1tkTPruKWMWCjCoYpl3Qg9L0=; b=GIg2KtOhyyAL6OCpZR6ax79ao/k2vOFT2Bn79lyPF+J4PfyGoRh8tOIfCNQcuTRFrN rYB5ZIv7mJhmG+haDhrc34ZZGdnIJBuve75xL76XFDToxQNgM1q0VrN/U4bh0JQNF4Ag 4cFV5+Bq0ctvPD9Mty+4CWJx3X4jyA5vbzetVuVCOovcUwOCeNJr49UKponIyomLKdOO Cr/kzY7PMseURppJSP81unqW0LhckA99yhvHOfsYjqr1qZEXa5sW5M4wkGHD/NMNlXD1 lRm9PTfePsPhau0Ed6+RGGTMX/ORO0eFMmQ8/gEs4+CSCldhmRU++d72Q+8OqqbPwQRF rM7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746775514; x=1747380314; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=W3DwS3XecWfHq+U2C4T1tkTPruKWMWCjCoYpl3Qg9L0=; b=TfY+KKoM8CPK2YWP9xGy25uD4TGPZjg1LzefLxBkBL21V9+bK4RfUyOYV9gjNy3tec MKamDC9+2Y092Zcc1B7Xx8jWk4lE0qIH4YWmfovB4bHbFGVPX/3UYw+AjjBcLHbxHj5+ sTxrK7wzQoB7kTOvJDsw6Cx1OI5A39Eb6vZW6MJ8efO8SmyIrLq1uJE2GYCvyld3PJh5 +1dO/zZ3X+ftD3JNbr7N1vmLkl6PbY3mO2mMaGJwUSg1tPt7gs2J2u+xXlunRqqKpgS6 haWjMl0NxUGdwMDKxwhoUD93rv0hq4kAG4PLz7iXN2FcocLKZxZk/qDvpOy2SbpRyydc v6OQ== X-Forwarded-Encrypted: i=1; AJvYcCXMK4teIXE4Cw+tZEYVSdn3TMYuppOOmc15rvx6y4CMt9gcCskNXeW961BoNwrhUlilLKnz/j7wQA==@kvack.org X-Gm-Message-State: AOJu0YytY2r5B4K3fp9WPae5peZ1yOA/fzCttOpwybKlC7LPjmmBj3yv 4eyTNW4YZv3rC3ILAaMpl7BFdOIiJzaTVUlmJ0mICh+ZT3dRXieBfGaDtjzjPn8= X-Gm-Gg: ASbGncsO34TqwVQu4Jw73nDnhL8nBJm2jFhKIfiOb3iLKAd7VhdGydquisyZalBPvvC BD6mEFg/kKOveE8o5yJ5YCubf79ZCsiyuQ+UZ3i5LhtnyeQ+SxwvTHueUfqi0KMhTxI/gYvADmG cjunsZmLfUQ7MzKbfwwyksLVBAB4BpZ1d/6JKqkQGU/3ruWhtnVUO2QH8Z/OtV7bXkUUx8SLgrG nPJz3QJVBiGv3or9KieKZsYgGJNTWmSNLgnI5JRO6AnIyvHabTd2wZNeimyuvOzn1yzAL2p8bfp SdGAhd/kSrPWSAzRr9eEFVx3DQEJ1IK6aWjJcVhfBOkgx8i/6sc= X-Google-Smtp-Source: AGHT+IGBUKrEpJ6BVoevUqYIClCw9VU2QZzDnvjuCoKtExpWDcfQQJeoFvwRzW2q8K09XOwXX2GlaQ== X-Received: by 2002:a05:651c:551:b0:30b:c608:22bf with SMTP id 38308e7fff4ca-326c5031c91mr8789851fa.9.1746775513648; Fri, 09 May 2025 00:25:13 -0700 (PDT) Received: from [192.168.1.140] ([85.235.12.238]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-326c358ad13sm1898031fa.96.2025.05.09.00.25.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 May 2025 00:25:13 -0700 (PDT) From: Linus Walleij Date: Fri, 09 May 2025 09:25:09 +0200 Subject: [PATCH] fork: define a local GFP_VMAP_STACK MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20250509-gfp-stack-v1-1-82f6f7efc210@linaro.org> X-B4-Tracking: v=1; b=H4sIANStHWgC/6tWKk4tykwtVrJSqFYqSi3LLM7MzwNyDHUUlJIzE vPSU3UzU4B8JSMDI1MDUwNL3fS0At3iksTkbF1jc1OD1BQjg7RUyxQloPqCotS0zAqwWdGxtbU AOi9dF1sAAAA= X-Change-ID: 20250509-gfp-stack-3750ed20fe9d To: Andrew Morton , linux-mm@kvack.org, Pasha Tatashin , Mateusz Guzik Cc: Linus Walleij X-Mailer: b4 0.14.2 X-Rspam-User: X-Rspamd-Queue-Id: AD33F4000B X-Rspamd-Server: rspam04 X-Stat-Signature: kbiwwzgs5w5or4bc733jcy6ksstek1r7 X-HE-Tag: 1746775515-686013 X-HE-Meta: U2FsdGVkX18Tdnyh/iMB85Hz3YuKfBogPuzY//boIRy6C8VwWFHSeBuZh67bxNB2o0wtptjaMscabPXRDSdK/ijDwuJlHdxZcTnAMNcuHzzxcqtrzoq3275+cSaim4vf3kKSfMd6hBZ/pbG2cJ+RWts7wkWoM8ge19i//0LnaxQRTsU47ED4MdZeE6ePqe1wTFX/MLD1BGCDh6csOzz5JFtdqHj7JeGfiN4b2gVo0y1jVR8fmvO9VPoT4P8kRKq58zks9XWKuaW8Ap5rmKFEVRe52hQNLyFXVuRHL7WYu3FtIpJmPC4nriksJkN55T/56j5xbzfKY+g8kRMrWRXQC/XmT4sbsX77vR8sfqEfOr/ZyWT+eShdpYDqtNQhsmAGclncP8574ffsiJ/N4gcOCYCTKR4AceYAdnoHutq7vZ1N8XVO1CD6OkiXJwKGrMU/X9A4q+/iEohWFhY0ualW29SSxdJVUKm98zNQorRcXtN9NAeJB5Wpk3p2BdC00aYzxDmcDfapMJfPsOH9eBC3pbOk3MaJ4tzylO2L28A04QEVt7nKGSb+UblLmU9qEGq6WR9qiHy4tqG8yNboa4/di2HhWXVLuNorONOM65vCE3s7GwyfjAtNdb5bGQwcgJWMLQFJ6rfmJL2LUVIfPytDdpPDztAmcWOQkScocOBLHLd5gwlVqBo6q8h0GcL3aGrtYsvRRUWqbx3jkhsVqe66JJHrijJkdeOA9l/jXid203kjJ3wRftaq2XiemWOlGqvGc0dXhWZrdNHld25vfiXqQ0dXf814FF/MWCVA5ThworNNmBt4pYAVK5I7cyBPvBcYMAN4xqZkLa5jGDK+JAa+402npeaiUIJQ/Mi7EeGxCUTZqxpzVRjFKISGLlNstt/qmwiKPhBkTm/aDi9PexpmcVcG1f0Fqfe+jd00GniGySD7iTDGSQLqnSBAAn4Ol/+8wOPDh+/5lFWNBDucND9 sj6S/k77 yVFA7tMHZmVFd0A2XWYRaEabTKQnrT/4eGTdtvEKdj9tKHyRsH6Ew6R/ozFAELWeng73FM8Le8k1LlyOvSdvLRnI39CpAbL5/bCLvdpsMd50b3RdvR/dRnJT3F89URjwcgHf5JBJw6iRO7yXWVhjPR6tpPyHbYHRYHag7f4BEG8pdiFhOfTnh3YlG+/wmmzucniMePwbO4mV5fqrDH87lmfZARxnaW3WWSq0Ajak2ZuUITlbztL5gjvAkafzzTwlqmg8n/GairTCyq7bpZOBP09WRvG8tPBXI74tIqpCJW71e43WsBTTe2aym1xiYkL7mrh1p+mCcoBFk1zJiI7inv+hXvRyyJv+14jaOEZHQIJgHK6/m7f9Ua5lgKXXXyUfA0cmTPHDI7y6oxMekD91GEtSBNg== 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: The current allocation of VMAP stack memory is using (THREADINFO_GFP & ~__GFP_ACCOUNT) which is a complicated way of saying (GFP_KERNEL | __GFP_ZERO): : define THREADINFO_GFP (GFP_KERNEL_ACCOUNT | __GFP_ZERO) : define GFP_KERNEL_ACCOUNT (GFP_KERNEL | __GFP_ACCOUNT) This is an unfortunate side-effect of independent changes blurring the picture: commit 19809c2da28aee5860ad9a2eff760730a0710df0 changed (THREADINFO_GFP | __GFP_HIGHMEM) to just THREADINFO_GFP since highmem became implicit. commit 9b6f7e163cd0f468d1b9696b785659d3c27c8667 then added stack caching and rewrote the allocation to (THREADINFO_GFP & ~__GFP_ACCOUNT) as cached stacks need to be accounted separately. However that code, when it eventually accounts the memory does this: ret = memcg_kmem_charge(vm->pages[i], GFP_KERNEL, 0) so the memory is charged as a GFP_KERNEL allocation. Define a unique GFP_VMAP_STACK to use GFP_KERNEL | __GFP_ZERO and move the comment there. Reported-by: Mateusz Guzik Signed-off-by: Linus Walleij --- kernel/fork.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/kernel/fork.c b/kernel/fork.c index c4b26cd8998b8e7b2b516e0bb0b1d4676ff644dc..bd950104fca925a4bb4f7d220f00ef8997ddf4e2 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -198,6 +198,12 @@ static inline void free_task_struct(struct task_struct *tsk) */ #define NR_CACHED_STACKS 2 static DEFINE_PER_CPU(struct vm_struct *, cached_stacks[NR_CACHED_STACKS]); +/* + * Allocated stacks are cached and later reused by new threads, so memcg + * accounting is performed by the code assigning/releasing stacks to tasks. + * We need a zeroed memory without __GFP_ACCOUNT. + */ +#define GFP_VMAP_STACK (GFP_KERNEL | __GFP_ZERO) struct vm_stack { struct rcu_head rcu; @@ -306,13 +312,8 @@ static int alloc_thread_stack_node(struct task_struct *tsk, int node) return 0; } - /* - * Allocated stacks are cached and later reused by new threads, - * so memcg accounting is performed manually on assigning/releasing - * stacks to tasks. Drop __GFP_ACCOUNT. - */ stack = __vmalloc_node(THREAD_SIZE, THREAD_ALIGN, - THREADINFO_GFP & ~__GFP_ACCOUNT, + GFP_VMAP_STACK, node, __builtin_return_address(0)); if (!stack) return -ENOMEM; --- base-commit: 0af2f6be1b4281385b618cb86ad946eded089ac8 change-id: 20250509-gfp-stack-3750ed20fe9d Best regards, -- Linus Walleij