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 3F0FFC3ABAC for ; Tue, 6 May 2025 07:58:07 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 344BA6B0085; Tue, 6 May 2025 03:58:02 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 27C3A6B0088; Tue, 6 May 2025 03:58:02 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 082756B0089; Tue, 6 May 2025 03:58:01 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id D5C506B0085 for ; Tue, 6 May 2025 03:58:01 -0400 (EDT) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 4E8AE161DCD for ; Tue, 6 May 2025 07:58:03 +0000 (UTC) X-FDA: 83411729646.15.E81AA48 Received: from mail-lf1-f53.google.com (mail-lf1-f53.google.com [209.85.167.53]) by imf06.hostedemail.com (Postfix) with ESMTP id 4DA4718000E for ; Tue, 6 May 2025 07:58:01 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=linaro.org header.s=google header.b=xov52OSf; dmarc=pass (policy=none) header.from=linaro.org; spf=pass (imf06.hostedemail.com: domain of linus.walleij@linaro.org designates 209.85.167.53 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=1746518281; 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=3k0KKzbNsKrEFtli95+26+9rAi7oBm0D7hDhp7BeFEs=; b=kdUyBJCZMtKv57u+4ZtZQE719JXXjt8lm9l0TWtwum65F4qX6jyTkAuahFPqx+t0hib/n6 s+QceMAAUjCPuz3guAkyLBhNnUtx1O3O3oBgb0r9pMTwTj8RgAR8dOx3lrhjxx4NkOerUx PrAtt2sSDyHe/dBBAN570ITDRvs2ruE= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1746518281; a=rsa-sha256; cv=none; b=z4tgXh2CmdtvE0IVyALe1xRgBxni3e+kt6hTj18vQeO8BWPBIlAyQr/i3aXNmwxsT05r4J 1aHNqX7kifiMjz3/9+HYX3gbA+3Wxs9W/aU8b1enOm0fLI7LeyFs0sWlIZeEyr+Sv4Fvh8 WqilmhPm978aYL+xEvTFYV/ar4iaEhU= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=linaro.org header.s=google header.b=xov52OSf; dmarc=pass (policy=none) header.from=linaro.org; spf=pass (imf06.hostedemail.com: domain of linus.walleij@linaro.org designates 209.85.167.53 as permitted sender) smtp.mailfrom=linus.walleij@linaro.org Received: by mail-lf1-f53.google.com with SMTP id 2adb3069b0e04-54ac9b3ddf6so5263999e87.1 for ; Tue, 06 May 2025 00:58:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1746518279; x=1747123079; 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=3k0KKzbNsKrEFtli95+26+9rAi7oBm0D7hDhp7BeFEs=; b=xov52OSfSkWhz6KyMHDnB70du+p9il3gOWYC+s5f4ZRlkKdML1LY6X/EhNhQbYSHDI NWYesEDbHVMyi4+CFDyIbzgp7W0uPJfouXs4ICxjguj4GhMvP8zV5k72ebagqfpP7Fld n5vOSJ0ovEC6LyPvvEjFiyzzjyKja39pIKm7Y/dJdMrqX/6+ok1y++b4KPe4huc1Jbny 1ZhOFbXx9/Sk4JQplKRb8gcS0A/kYpSPUZD3hKPG7bPDJZKGT/l8R8G4r9/kA0h0Ck9x kt97hzL7rzOaBshRdwWyCGH816vMXZf0T7NWzfBapYJx5nSlUbOun9upsjxP+nIfESmB 9G9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746518279; x=1747123079; 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=3k0KKzbNsKrEFtli95+26+9rAi7oBm0D7hDhp7BeFEs=; b=v78yt0My5OkHNZ3qmc3NJi3x1xp2kAnLTTpZoZEwNqdFMSikkBOuTlZXX8MuKD0ORa 327vFoA8kWJF1/nKK9a7/x2vPgWOK4pkoEY8NFqSbTKkfekQq+3VCY2FBvGMre7QLg/u 3cVN37vdflJUJIl6P+2Q6UJ/Lj+72lyVpEyPPGNrgxm4ji/J/Ge3VH4F2I1Qk3woh3id LxHHs4s7yAWJK10vp+f6e2T1R4ARCsMfLrk57kMyeaQIy6HSl7pv8q8PHFeVW4DqaPtO Gkok4ibfLj2o2g34zX3HjyCUK+TzmZVvyXsvkoYV+sRT/o717iTAZA7TYL6adCgAaF75 eM8g== X-Forwarded-Encrypted: i=1; AJvYcCUsCXfLV3uTltIww6ApSIw2tbqw1mbHqMAzr1RjVf6i21bndr9LcMrN8y7bSQgAaJAgwVqtzVxDNg==@kvack.org X-Gm-Message-State: AOJu0YzUO7eK1k5WmRBZERJu7USWEoqpARlo8qScZYXQZv81iCWV15QR 3Qg6LGKiwCBUQulu7Goft9B/m6fGT1SOixYJbqH/K2BfOasqKABUPmcPn1nBc/r5+Z/Y/5yp/7u L X-Gm-Gg: ASbGncuYod+lLa+DXA90WNd3UD/vgPbe5+zmUdQR5klwtvazdjwpkYJKdXRy7JhVeDN can4nMTmq36H/HR2hjk7Hj3OoTtXq1dgfP4V0nqActeuSHEPbjFiLx1Mrazc7gWzKFdWx+YRq4z BXfZEEyQX7BMAuZhDnVz+4j2oEVc7PfVf6EUacuGtA8zb4qvoWrfgDHuBWMSW/jV1/hdo/PGmWP 1rEO9YD6Pa7Cm5gNwXLP21Z/vaO1FT/piAeH1IHTT5FeCqRMYnf3gzWmtm2SRa67V3sKHP2ar6z sVa0QothUCD8LUFlJpkPbndh/PekLEOw2Bt09dhha+XhnaAz5dk= X-Google-Smtp-Source: AGHT+IHd9ES6PL+RzgesVAH3BRdG5dxMS8uCb3JwH7Z96OrKWJb0dp8GMLxHDGZ3ONCngMwgkPcBlQ== X-Received: by 2002:a05:6512:ba1:b0:549:8db6:b2dd with SMTP id 2adb3069b0e04-54fb4a6a3f2mr732577e87.31.1746518279225; 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.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 May 2025 00:57:58 -0700 (PDT) From: Linus Walleij Date: Tue, 06 May 2025 09:57:54 +0200 Subject: [PATCH 2/5] fork: Clean-up naming of vm_strack/vm_struct variables in vmap stacks code MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20250506-fork-fixes-v1-2-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-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 4DA4718000E X-Rspam-User: X-Stat-Signature: fiex5uyaaq9mgjeqqa3m495rs9zcz7if X-HE-Tag: 1746518281-443303 X-HE-Meta: U2FsdGVkX1/aFtUwrfKZVz+bF57M46wZXcp8WL4pY7pybEGLzL2EKdtEgHWbqMyEqA48RapMmE9fbErDLpD4JiW1xerPEILaXqxpxqjxI4lRCOyv/lWW3ikInO6Q2p5Eor6qq7bqXoITIh7CbXn0TSbjI/IVTCKdikPe/Xi2essCk3orFn9l2cnF6TRSMzHrdRQEm8feXhsdFK+vGT1YBqz028FDrQJOOBl8agiBDAIxc7GrqvEkN5ZBnZyT1R70VtGqrkWRk0qi6NRfbDEFE6ub/jfJMPST4P9WYQ/ijAyfZUVL+bL9ps9wq/zZZKJ/FONoXes2EuOoBl4oj0Gv1WfdhElR2pTQUWr4XczNUCaOV/Nl+WPurpUCybFWf6JXlkIDGZSmIyjhHQ/QrFT6IEfYAkUouXWef2mjN2XmUgZPCahHxhFcuhPVRQrkHbbGTN4NutrsFA9SZSLUz8V66BL5lVjwI2lGrsOFWmKYG2gbsvvBpxf7FbP36YaxkdVLV2JnmLfg3wRLIyy1ZZIslC0dOSsmPsNFceUHUgrJjdiZyFCLPrjcaXBH0HDz1ZVhtEtWEwGz+mV3MezYpE5v70P/rsA55zT6YePrtCxokSPUWmaqQQQO2MFBTPcrQqm3WD1OygB/By4wrxv2Y7mjaMECc2hIOg1N+Vo+gOF+xn2t0Wmw7Qll34KPQXlJgFF37qNrunlv6H/FhPmfVDmzHyIGajXsglGh4x/kVpyFmSeyxSty3dpZfwo0AueT5q+8YRdQRYQw9a7BMJx1yjGKlB63Z4bKizLGGS8np9fDRkFOWR1UvCVNdMVorMGNDZCXZz17e7HW25ndI6pHgMnIiau8V2WGHMR9TtQB+H4Mw+ivuUivpxdjPcIbqu531HtGh2slEnJTBBzNb4ajREftX0bNoZwHWPyHSDa8ZjYRZ4GxCCdHhQQLi5in1859Ia6O0m7ISXlt02lIVfEmHID A2qJjedG ngtmUnus4cpRsW53yVtyLLqpDpqmNrY0HZ2h8tnLCz/kJRO9OuCvs8nLCt8UwH3sF9pZiUBMgtkfSPPcAKvb1WZn03qEZ6GlEn5/HTWRH44i5JTuUmK6XBlG8GkcnrSm+Kz8rW5CMPZLQmGhvCKiprOYgYeU8yVW6gD9TlExO1lPJktUFtktlj6l8zlzDwnLuJ+rJfOebSLcn9mO4abne9Snf7gIMBysPjhr5K09KMLpk8OM0plOcH6Pg1ci6ei7icQ1xt1G5tNeRDGw8Yt/Jcz4s223T6PcJbVgnjpdHuGQ7Ne8WXMOWz94MiUnjzs51q1vDJunT9+qge8BadaSNmp+lp7GjvXYFS+A7NGqw6k2RtMP+kgunbdm6gnACISF8kX92auslTbR0zyIsa/wsyv7tOEPFL068TB2p8oVkhDM1DUOeIyFEC7NZ8T8F597EcrH3+IKGcyArtwl1Bif5eXjLtQ== 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 are two data types: "struct vm_struct" and "struct vm_stack" that have the same local variable names: vm_stack, or vm, or s, which makes the code confusing to read. Change the code so the naming is consistent: struct vm_struct is always called vm_area struct vm_stack is always called vm_stack One change altering vfree(vm_stack) to vfree(vm_area->addr) may look like a semantic change but it is not: vm_area->addr points to the vm_stack. This was done to improve readability. Signed-off-by: Pasha Tatashin Link: https://lore.kernel.org/20240311164638.2015063-4-pasha.tatashin@soleen.com [Rebased and added new users of the variable names, address review comments] Signed-off-by: Linus Walleij --- kernel/fork.c | 58 ++++++++++++++++++++++++++++------------------------------ 1 file changed, 28 insertions(+), 30 deletions(-) diff --git a/kernel/fork.c b/kernel/fork.c index 7b9e1ad141baaeb158b1807ea9fc3ef246f5f3a7..3bed36a56292e3b868895dac169266c428f8c1ff 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -198,14 +198,14 @@ struct vm_stack { struct vm_struct *stack_vm_area; }; -static bool try_release_thread_stack_to_cache(struct vm_struct *vm) +static bool try_release_thread_stack_to_cache(struct vm_struct *vm_area) { unsigned int i; for (i = 0; i < NR_CACHED_STACKS; i++) { struct vm_struct *tmp = NULL; - if (this_cpu_try_cmpxchg(cached_stacks[i], &tmp, vm)) + if (this_cpu_try_cmpxchg(cached_stacks[i], &tmp, vm_area)) return true; } return false; @@ -214,11 +214,12 @@ static bool try_release_thread_stack_to_cache(struct vm_struct *vm) static void thread_stack_free_rcu(struct rcu_head *rh) { struct vm_stack *vm_stack = container_of(rh, struct vm_stack, rcu); + struct vm_struct *vm_area = vm_stack->stack_vm_area; if (try_release_thread_stack_to_cache(vm_stack->stack_vm_area)) return; - vfree(vm_stack); + vfree(vm_area->addr); } static void thread_stack_delayed_free(struct task_struct *tsk) @@ -231,23 +232,23 @@ static void thread_stack_delayed_free(struct task_struct *tsk) static int free_vm_stack_cache(unsigned int cpu) { - struct vm_struct **cached_vm_stacks = per_cpu_ptr(cached_stacks, cpu); + struct vm_struct **cached_vm_stack_areas = per_cpu_ptr(cached_stacks, cpu); int i; for (i = 0; i < NR_CACHED_STACKS; i++) { - struct vm_struct *vm_stack = cached_vm_stacks[i]; + struct vm_struct *vm_area = cached_vm_stack_areas[i]; - if (!vm_stack) + if (!vm_area) continue; - vfree(vm_stack->addr); - cached_vm_stacks[i] = NULL; + vfree(vm_area->addr); + cached_vm_stack_areas[i] = NULL; } return 0; } -static int memcg_charge_kernel_stack(struct vm_struct *vm) +static int memcg_charge_kernel_stack(struct vm_struct *vm_area) { int i; int ret; @@ -256,7 +257,7 @@ static int memcg_charge_kernel_stack(struct vm_struct *vm) BUG_ON(vm->nr_pages != THREAD_SIZE / PAGE_SIZE); for (i = 0; i < THREAD_SIZE / PAGE_SIZE; i++) { - ret = memcg_kmem_charge_page(vm->pages[i], GFP_KERNEL, 0); + ret = memcg_kmem_charge_page(vm_area->pages[i], GFP_KERNEL, 0); if (ret) goto err; nr_charged++; @@ -264,38 +265,35 @@ static int memcg_charge_kernel_stack(struct vm_struct *vm) return 0; err: for (i = 0; i < nr_charged; i++) - memcg_kmem_uncharge_page(vm->pages[i], 0); + memcg_kmem_uncharge_page(vm_area->pages[i], 0); return ret; } static int alloc_thread_stack_node(struct task_struct *tsk, int node) { - struct vm_struct *vm; + struct vm_struct *vm_area; void *stack; int i; for (i = 0; i < NR_CACHED_STACKS; i++) { - struct vm_struct *s; - - s = this_cpu_xchg(cached_stacks[i], NULL); - - if (!s) + vm_area = this_cpu_xchg(cached_stacks[i], NULL); + if (!vm_area) continue; /* Reset stack metadata. */ - kasan_unpoison_range(s->addr, THREAD_SIZE); + kasan_unpoison_range(vm_area->addr, THREAD_SIZE); - stack = kasan_reset_tag(s->addr); + stack = kasan_reset_tag(vm_area->addr); /* Clear stale pointers from reused stack. */ memset(stack, 0, THREAD_SIZE); - if (memcg_charge_kernel_stack(s)) { - vfree(s->addr); + if (memcg_charge_kernel_stack(vm_area)) { + vfree(vm_area->addr); return -ENOMEM; } - tsk->stack_vm_area = s; + tsk->stack_vm_area = vm_area; tsk->stack = stack; return 0; } @@ -311,8 +309,8 @@ static int alloc_thread_stack_node(struct task_struct *tsk, int node) if (!stack) return -ENOMEM; - vm = find_vm_area(stack); - if (memcg_charge_kernel_stack(vm)) { + vm_area = find_vm_area(stack); + if (memcg_charge_kernel_stack(vm_area)) { vfree(stack); return -ENOMEM; } @@ -321,7 +319,7 @@ static int alloc_thread_stack_node(struct task_struct *tsk, int node) * free_thread_stack() can be called in interrupt context, * so cache the vm_struct. */ - tsk->stack_vm_area = vm; + tsk->stack_vm_area = vm_area; stack = kasan_reset_tag(stack); tsk->stack = stack; return 0; @@ -517,11 +515,11 @@ void vm_area_free(struct vm_area_struct *vma) 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); + struct vm_struct *vm_area = task_stack_vm_area(tsk); int i; for (i = 0; i < THREAD_SIZE / PAGE_SIZE; i++) - mod_lruvec_page_state(vm->pages[i], NR_KERNEL_STACK_KB, + mod_lruvec_page_state(vm_area->pages[i], NR_KERNEL_STACK_KB, account * (PAGE_SIZE / 1024)); } else { void *stack = task_stack_page(tsk); @@ -537,12 +535,12 @@ void exit_task_stack_account(struct task_struct *tsk) account_kernel_stack(tsk, -1); if (IS_ENABLED(CONFIG_VMAP_STACK)) { - struct vm_struct *vm; + struct vm_struct *vm_area; int i; - vm = task_stack_vm_area(tsk); + vm_area = task_stack_vm_area(tsk); for (i = 0; i < THREAD_SIZE / PAGE_SIZE; i++) - memcg_kmem_uncharge_page(vm->pages[i], 0); + memcg_kmem_uncharge_page(vm_area->pages[i], 0); } } -- 2.49.0