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 8E854C71157 for ; Wed, 18 Jun 2025 13:34:40 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 14C396B0088; Wed, 18 Jun 2025 09:34:40 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 123E86B0089; Wed, 18 Jun 2025 09:34:40 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 03B846B008A; Wed, 18 Jun 2025 09:34:39 -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 E7E3C6B0088 for ; Wed, 18 Jun 2025 09:34:39 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 803CE141B1F for ; Wed, 18 Jun 2025 13:34:39 +0000 (UTC) X-FDA: 83568616278.16.1607370 Received: from mail-lj1-f171.google.com (mail-lj1-f171.google.com [209.85.208.171]) by imf21.hostedemail.com (Postfix) with ESMTP id 636FB1C000B for ; Wed, 18 Jun 2025 13:34:37 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=linaro.org header.s=google header.b=V2APacWn; dmarc=pass (policy=none) header.from=linaro.org; spf=pass (imf21.hostedemail.com: domain of linus.walleij@linaro.org designates 209.85.208.171 as permitted sender) smtp.mailfrom=linus.walleij@linaro.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1750253677; a=rsa-sha256; cv=none; b=Bv8fV5oh7i7KxwRFRSyWCSbICf/aig79d6tnhwlyGqE2KKkl2JEj2qtH6zXrE97tyBh+Cz t+GH8fyIT2tuTYV5HBVPC6LC6yi70luTswU/jx+v67ugGJqSlBOak+cPnIfX8ZnPVaTVAz 6KkuKS/gOPWz5IgebRTq8T7lJ/QoXyA= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=linaro.org header.s=google header.b=V2APacWn; dmarc=pass (policy=none) header.from=linaro.org; spf=pass (imf21.hostedemail.com: domain of linus.walleij@linaro.org designates 209.85.208.171 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=1750253677; 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=8w/y5+q15O+NH+rTflZ6kyEyXWkZKJiw69VsOsisxk0=; b=kGANZB+ttS1IoE9PHLoqNwdi0iB8SFwoWu7lfs4Q5JRxBCj39+RQqKwtialyFkp6/FVB+U XtRAcsCBUXraah70yOfzL4Y64B4W/n6pM/T9dcKwL+q/Fkz3r5xTiFf05Ux8XTEfneLX1C diTNZB0F33KEF57IZRLuyQPlsxohXGQ= Received: by mail-lj1-f171.google.com with SMTP id 38308e7fff4ca-32b595891d2so31264721fa.2 for ; Wed, 18 Jun 2025 06:34:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1750253675; x=1750858475; 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=8w/y5+q15O+NH+rTflZ6kyEyXWkZKJiw69VsOsisxk0=; b=V2APacWnDqCm0AmgKVpMkKggDE1TEKXOh/FTyIXKEVfkizouNPqYAUhwouhrhRbb29 6iEnsrxeshB6GYbrPnXWhTzq9gknvrW2bLbt42CYZDQNhnPs6vf5/TTLe/fQRL83uv+K KwyC3aGVHkCqLS8btyniHVZDmvEt3V1tGQ0JE4b3oB5qL5LjDuKGagLgy51ZtdnCYf1I b35oybfVjrRovDvoiT2Dk89Q4JIGWMTRxZ2xVmAvsKxrYkIftMqBekdnkp7CLfr9pIaY xHHMXMFqMllCE79c6Q/7O41KS00iHxwMeiaqjgR16hYaLeVdwW+lqGGZ9zQper3AhYQ+ p5Lw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750253675; x=1750858475; 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=8w/y5+q15O+NH+rTflZ6kyEyXWkZKJiw69VsOsisxk0=; b=gvJY1v+/2y73qPETNimYn5m41LRBgQrt1DlRJUw91kgEPpurd3s2Ukbuk6dZwzCbZ+ g3elq5LRYTxOjHBqX7hQlMYO+ImsaFqGGGuI2gWygSvCOP0uSf1Lzl9xQLVyhhyMoDpP 7Pm0dAxNWQgNIhqz9J4MD14oBbO0uLQbQIy3TrMvWozGbTt874PYi0S80Ce0YYxCUitt VVxI8VBC++cDy2nbfZ7vx0W03kMvmcP+dYaRrR/jaHYk1bQYTLDrnqPUu3SR9pOTBRb5 FaW5KwKw7yiLxCGgFJgLykclj5SQU7Km/R3PqqrUeqhH0pGQSlIDf61EbjUmHhA7ccwu wGTA== X-Forwarded-Encrypted: i=1; AJvYcCXznuXlkTK9L9DGYbWoCdqEi+nhd+GMv1BURLTnVFBXzwEfdO+hrXxrW3DTJ81XlNljPSnlGjWniw==@kvack.org X-Gm-Message-State: AOJu0YyZIRhrTMkrdHpvA/SbMejI7Ko7vgLlVd1Vo62ecKDVQdbEaMLc 8EJNIrS6seK6AFUvzL4SOc6VG0/kAgbAKHGKEe5gqmwxaY136bv8anAYMNFfTYXInCs= X-Gm-Gg: ASbGncsjMtBFfd+YWo2OBbohfqo2JM/rtxaRYWv32fmdl6BjK4mDjgsY2u6KOq7F7Sb CZEE9jpitPSVPbRQ0WrIIluqFzRFUxUwQ+++n2YL6bOLJ6utmrNPcNXQlNQp6f/R7+OK87ZMiQT R6rmOZjgc8ISn3bhWlfeDm2bt8xezajVd3oolxlTpDeQm5GUm0Plgu7ISOFdouuHuHtMLnXypsJ AZkGVV4NZadY1x5dgZ0XzB6RUPaGjc1HyK6BLgQe/08JocbOeWxVeN76A6GK9nMFftrMAb1rYRb nrQ+1nBa+D3Pzrp5o9xwLmPYaVQ6piQWTjFDf0fZpVAURclZ0pfY5S2dmAiw9lw4eVr5f6Gv X-Google-Smtp-Source: AGHT+IFUIG8sMhQt1gKWA443MhxN8NYbfUyTBO8EsgvbPR4hhAlJoqItE9Y3ijFOr8Ybrqfekwt8JA== X-Received: by 2002:a2e:a78a:0:b0:32b:5e32:d2a5 with SMTP id 38308e7fff4ca-32b5e32d6b8mr38664461fa.30.1750253675286; Wed, 18 Jun 2025 06:34:35 -0700 (PDT) Received: from [192.168.1.140] ([85.235.12.238]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-32b331c7e2asm21654261fa.91.2025.06.18.06.34.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Jun 2025 06:34:34 -0700 (PDT) From: Linus Walleij Date: Wed, 18 Jun 2025 15:34:33 +0200 Subject: [PATCH v4] fork: Clean-up ifdef logic around stack allocation MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20250618-fork-fixes-v4-1-2e05a2e1f5fc@linaro.org> X-B4-Tracking: v=1; b=H4sIAGjAUmgC/2XNQQ7CIBAF0KsY1mIoFGhdeQ/josDQEk0xYIim6 d2dNjFp4/LPzPszkQwpQCbnw0QSlJBDHDHUxwOxQzf2QIPDTDjjkklWUx/TnfrwhkxboRujrNS NFgTBM8G6wPvrDfMQ8iumz9pdqmX6q1HbmlJRRo0T0ijhma/M5RHGLsVTTD1ZegrfWr2zHG3DO 1NBza0D8WfF1rY7K9CCsqp1+Fx5vrPzPH8BzwVFsR0BAAA= X-Change-ID: 20250504-fork-fixes-9378b6c57873 To: Andrew Morton , linux-mm@kvack.org, Pasha Tatashin , Mateusz Guzik Cc: Linus Walleij X-Mailer: b4 0.14.2 X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 636FB1C000B X-Stat-Signature: ye39mo9wqdx4zifbt41mixrk5afpsijw X-Rspam-User: X-HE-Tag: 1750253677-784900 X-HE-Meta: U2FsdGVkX19cuKFYkJ1SBLG1D7Lm/H4oVLDz7PbLhkXPLkp7yXyB37K1qEt66TfP82H1bdIMzYqSWeTzUEwuGgXLmMFYY59BYUn337eMc+kc2CbOzD93VZ5TN48NoUVKEk0WXBMyFXEhuYr3JMwQIS06jldx7BURjllptGH4ZHFqsKN/M8+PgUlQvoHfh7XcGu7jqAAFUaAIanhwezlRDU6aDHBtWnZg138kqLZIzcvGMxjfp25uWJsuvxLL+7RB3Sut7Kn4+jkN4v0KWFXNU4WYPEuKXKVgmSTT3kEcsuefwbV+njtjJdVLupSAIn80tUy7lmhNuK+ztu6b+HuIobfJDcnDLak/ZRIG3v3R925VYTS0Oz17hqs0YtY6MtlgprdU6LFJJd8OzEGwVqvCam1TdyMwMBGiVnzh02Bnrp1Jp0SO7/fMykIkvJZfv5hXdIuXm6N7duVoGgi7vm+xiCbHCiaEuLc+nRCazqPpIAVifKN2CDsWjf+EfoiQ+bqNSdwF/ZrMGCPVQuZnZWMfD4npwNu2qtBppey3LgsQ0fy/CVlgsVhPPAcNbJ+JRekhLMGDr1Sx7+x2rDrrFK9r+21/KjmxGiobGPlAXW2QfsRqUetLJkMRmFEa1/2hlTHvSoymRFZApghh4lF2SyQuUZak7EC5ojM5hFc/4gPnxWESfEripdNpEtQVBRplRWeh3qrqwtgrVozoGZOlHCcHkGcOGdNmo6cKkRY0OnejRuoQuKWwymxZZCAyEbvkeTZguuzCMfxfTSkz73A631oFFCBqx11QtPnWxYAzSDg8We6RciwS7ZXLfEY9Q4TSM3xveontRseq/t+vNaTFtQIgl7INZ6ThKcnf9SnJnOlNeNO1Z5qyVRPm/G2yxplEAmNT4ro35k9fd9Q/Rc7G1y5uTm/bBJmuhFSz9irYFGIfcUX71aPxj7LqrPhJZXucCdr6bbEondyLZ/SBgKTB4+y 9sp0VVws AteyTbUjCs04Pv+06fVv34ET1erZXfZi2TpUKWm5OaODtZMvu8wmh2gBAkHxl/jNPXI54vbSRGt55J/EKeSXVQRGmtA451N3MAemM8eUsyq+/vEkVHnXPU8ZC2z2N20gyY7ZDXdyMzJBf1ILzQOEiOZ/TYTYi7R2CFjNMsXkMwFqNDJcN7Ey8vlK0QRadBH8Ss6KlREtqxPjpCk4Q4p1JjOnvcAJrffGNxqkw0LF/hy5C3yV7hAol/ka6j+TYVqs9Aqqf0Jn2fJI6pN1RyyvxrPru37qSLv6Va3V88UWnjFdYkYdAZcMuq7tLoizxHUrQ0Y8+QDS+gFn084TqRwf4YEU/hmCzD4QRwTcp7vLcfqP7VeggkL8banl/AiZ5jDiwwPeqTIRAd97MvVp2XdCchoKFmZ+hGjbGcLsJ 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 There is unneeded OR in the ifdef functions that are used to allocate and free kernel stacks based on direct map or vmap. Adding dynamic stack support would complicate this logic even further. Therefore, clean up by Changing the order so OR is no longer needed. Signed-off-by: Pasha Tatashin Link: https://lore.kernel.org/20240311164638.2015063-3-pasha.tatashin@soleen.com Signed-off-by: Linus Walleij --- This patch set consists of outtakes from a 1 year+ old patch set from Pasha, which all stand on their own. See: https://lore.kernel.org/all/20240311164638.2015063-1-pasha.tatashin@soleen.com/ These are good cleanups for readability so I split these off, rebased on v6.15-rc1, addressed review comments and send them separately. All mentions of dynamic stack are removed from the patch set as we have no idea whether that will go anywhere. This is mostly MM related so when the patches are ready I expect they would land in Andrew's patch stack. --- Changes in v4: - Drop the two queued patches. - Resend the remaining patch for the ifdef logic. - Link to v3: https://lore.kernel.org/r/20250509-fork-fixes-v3-0-e6c69dd356f2@linaro.org Changes in v3: - Drop patches 3 and 5. - Patch 3 probably only makes sense in the context of implementing dynamic stack sizing. - Patch 5 is better addressed after adding the per-arch helper clear_pahes() to clear more than one page in a go, so I will wait for this to happen and propose an updated version at that point. - Link to v2: https://lore.kernel.org/r/20250507-fork-fixes-v2-0-82ab1e42cde3@linaro.org Changes in v2: - Fix subject on patch 2/5 - Fix bisect problem in BUG() guard in patch 2/5 - Move back to using a local nr_pages variable in patch 3/5 for performance concerns. - Use preferred patch augment format. - Link to v1: https://lore.kernel.org/r/20250506-fork-fixes-v1-0-bd35b63f0f1b@linaro.org --- kernel/fork.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/kernel/fork.c b/kernel/fork.c index 6616d173307a92a238fd5b8b74c97b90d551c968..bd8c21d64746163ef22baac6cf7e190fcaca3591 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -188,13 +188,7 @@ static inline void free_task_struct(struct task_struct *tsk) kmem_cache_free(task_struct_cachep, tsk); } -/* - * Allocate pages if THREAD_SIZE is >= PAGE_SIZE, otherwise use a - * kmemcache based allocator. - */ -# if THREAD_SIZE >= PAGE_SIZE || defined(CONFIG_VMAP_STACK) - -# ifdef CONFIG_VMAP_STACK +#ifdef CONFIG_VMAP_STACK /* * vmalloc() is a bit slow, and calling vfree() enough times will force a TLB * flush. Try to minimize the number of calls by caching stacks. @@ -344,7 +338,13 @@ static void free_thread_stack(struct task_struct *tsk) tsk->stack_vm_area = NULL; } -# else /* !CONFIG_VMAP_STACK */ +#else /* !CONFIG_VMAP_STACK */ + +/* + * Allocate pages if THREAD_SIZE is >= PAGE_SIZE, otherwise use a + * kmemcache based allocator. + */ +#if THREAD_SIZE >= PAGE_SIZE static void thread_stack_free_rcu(struct rcu_head *rh) { @@ -376,8 +376,7 @@ static void free_thread_stack(struct task_struct *tsk) tsk->stack = NULL; } -# endif /* CONFIG_VMAP_STACK */ -# else /* !(THREAD_SIZE >= PAGE_SIZE || defined(CONFIG_VMAP_STACK)) */ +#else /* !(THREAD_SIZE >= PAGE_SIZE) */ static struct kmem_cache *thread_stack_cache; @@ -416,7 +415,8 @@ void thread_stack_cache_init(void) BUG_ON(thread_stack_cache == NULL); } -# endif /* THREAD_SIZE >= PAGE_SIZE || defined(CONFIG_VMAP_STACK) */ +#endif /* THREAD_SIZE >= PAGE_SIZE */ +#endif /* CONFIG_VMAP_STACK */ /* SLAB cache for signal_struct structures (tsk->signal) */ static struct kmem_cache *signal_cachep; --- base-commit: cbc68827edcaac2df9aae2f58f9f6eb8a1256620 change-id: 20250504-fork-fixes-9378b6c57873 Best regards, -- Linus Walleij