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 9EA7BC3ABBC for ; Fri, 9 May 2025 06:29:37 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 464146B0085; Fri, 9 May 2025 02:29:34 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 4376E6B00A5; Fri, 9 May 2025 02:29:34 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2193A6B00A6; Fri, 9 May 2025 02:29:34 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id E89D96B0085 for ; Fri, 9 May 2025 02:29:33 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id A2E101CFD41 for ; Fri, 9 May 2025 06:29:33 +0000 (UTC) X-FDA: 83422393026.29.3545E55 Received: from mail-lf1-f48.google.com (mail-lf1-f48.google.com [209.85.167.48]) by imf29.hostedemail.com (Postfix) with ESMTP id A57B212000A for ; Fri, 9 May 2025 06:29:31 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=linaro.org header.s=google header.b=DTWHThk0; dmarc=pass (policy=none) header.from=linaro.org; spf=pass (imf29.hostedemail.com: domain of linus.walleij@linaro.org designates 209.85.167.48 as permitted sender) smtp.mailfrom=linus.walleij@linaro.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1746772171; a=rsa-sha256; cv=none; b=u4QmQBHMRmOcIhRBaG6bUC1JgCWeW8GBWNFJ6IO3zyCUoKajho6GSFeJmDitbCVwm+tLS4 /TYwqM7l40oxIA4M8Dy6eJbHZkzHu3f15DiiC/Itz70dzHiH8s0Ahy4qw8MfygtFnyNah3 s+jTLfQzQG9jqbRaQVH34FZ8WGqZRh8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1746772171; 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=TkazibaUN7CDErGeZNaSeWzDI4Jt6SFgyeJ8hQi/8UY=; b=0rD5xFgqX/W+hkfP63Tm01dXCRy0UeaEcUb1ofDV1wtiWk/jqdMska0C0RxmXvtUVgKBAq Vw++LYW7bYbH7TxG2FF01eEtnaxrlmEJ2++pewb5lBbVp8I0y1ihlGWrh3zkXoDCTGQ19Y PB5+/wxyHaNgSFGe3urH3jGT6YewkHU= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=linaro.org header.s=google header.b=DTWHThk0; dmarc=pass (policy=none) header.from=linaro.org; spf=pass (imf29.hostedemail.com: domain of linus.walleij@linaro.org designates 209.85.167.48 as permitted sender) smtp.mailfrom=linus.walleij@linaro.org Received: by mail-lf1-f48.google.com with SMTP id 2adb3069b0e04-54fbd1ba65dso1963233e87.0 for ; Thu, 08 May 2025 23:29:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1746772169; x=1747376969; 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=TkazibaUN7CDErGeZNaSeWzDI4Jt6SFgyeJ8hQi/8UY=; b=DTWHThk0dWi0tUxn76Yy6bHGT1YLP+9fEntaYO1XqPJVUP17uLHW2CpEysv4HuqUnH N8DeCzPpbnDfE6v9v2aZVpA2R8qRHMrBKdcngwUarKHZxf5zy2XbbFTqUUDZSwdL/67n 3qytx0PwOOL0KXT09ot57SeOYWrg6xcF8K55D7CrIPMecQlGWrsPgletztKK08gGmGfO UlMNRq0QzkDtfg6XuK3BPACdOPZ/RQ1DniIl39zAfBNV0r/kd3c5jt+xnQYcDRaEv34S K4tZWuFwu5eay6cSrcIQUqdkaCrRU/W9xjJnG0YmgxwZqRslDUPOFRTO/QmFrrETDFZ0 gGug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746772169; x=1747376969; 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=TkazibaUN7CDErGeZNaSeWzDI4Jt6SFgyeJ8hQi/8UY=; b=KoOQN0bBJuyBtugdVkmDm8ks1F5TfN1MExPwJASFL32bchwFL3Xv1/pXGFVJfDmOuC qAzzEdw4muoOCrkccO8IGsJByEB/blr2508yeN4sqa5LoLuZXbUBUm+JjLmYiGkobfDU 0v7QL5bPn0Dtb+b570PSp0XXW6u8MHx00GxX1YPRx0FEjg06tO84t/h2IXmyXddJWUw+ 5jChghihlf4ra0d7AfS+PrdLcS/frLiRWmFu5i65xOKhIOnRz+DNW19Z0MScPomV+pSm DR2ere6UL54XN13vqs30WtCZvrDJRQLVk/VTUM4yNxnh6pmqMQ74xjZN3PQYkTmdKOq9 sxgg== X-Forwarded-Encrypted: i=1; AJvYcCVjDG/6XPChYWRpyQ7sdjCTemx7z7WF+p6dAmTiMcTdGuO1mJDiH+t9iqFxpTB77/uYDxdS19h63g==@kvack.org X-Gm-Message-State: AOJu0YzgvVN2TIU438RFSuwSy4HokOYV/4q1ID+dejjXitqRwcD491UF bkNja9T1lCCaQBDRxrhIoKax6CjEfdLaGnCaj8JfFdcTh/9FgQR2TOuzn+V68KsHNgIyL6PYhZK 7 X-Gm-Gg: ASbGncv168IQFMiITXaaSoeRpM3KMCWcagPi4Hfy1j4mJDAeZgsKXwn3mC55XmAyCHP XrxfwbaTpy3HiND0F8uIog7EE974KrRdcAXmisOTV0SSUjg4xBoFp9x7l4/CaqKhPMr7NbZ2/ce K2zd7O++Kd6ENlo+GEioDOcyyuNU9z23p+8//L17tlFTy/hM+IYRb5b9ov58DNo8O87gkUGTCmy sdrQ06W60OzWHwp2pfbm0sVv0KN822RNF6lyouDDUBjyspmjEpAQM5y0Uc8mMjLcoFTrWiKWOoj qRfu/T0hIUhGRtZKdYLQpuhzuUf5Kc5E/GwG3GQFCdZ2cbKQ0r4= X-Google-Smtp-Source: AGHT+IFAk6oHcdCsSdZq4NnpbxK/9b2LcvsAbD41XYEfEFCsamV6+/97D2drjx5NuYux9r4iynF+qA== X-Received: by 2002:a05:6512:6408:b0:54f:c055:7c08 with SMTP id 2adb3069b0e04-54fc67c2282mr572435e87.20.1746772169063; Thu, 08 May 2025 23:29:29 -0700 (PDT) Received: from [192.168.1.140] ([85.235.12.238]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-54fc64b6dfdsm184223e87.117.2025.05.08.23.29.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 08 May 2025 23:29:28 -0700 (PDT) From: Linus Walleij Date: Fri, 09 May 2025 08:29:27 +0200 Subject: [PATCH v3 2/3] fork: Clean-up naming of vm_stack/vm_struct variables in vmap stacks code MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20250509-fork-fixes-v3-2-e6c69dd356f2@linaro.org> References: <20250509-fork-fixes-v3-0-e6c69dd356f2@linaro.org> In-Reply-To: <20250509-fork-fixes-v3-0-e6c69dd356f2@linaro.org> To: Andrew Morton , linux-mm@kvack.org, Pasha Tatashin , Mateusz Guzik Cc: Linus Walleij X-Mailer: b4 0.14.2 X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: A57B212000A X-Stat-Signature: 896rd9ncd8pnc6pr5u88dpn7eobqjbjs X-Rspam-User: X-HE-Tag: 1746772171-523700 X-HE-Meta: U2FsdGVkX1+5D4yJt+G/U1G9MgwpLoftiRSkKnQsCtuukwdaHi9rJNYFdEhxFUJYSs7+j+cwZ3/XxPfpR1wvRLxG9sV7XWwDNSKaoNfSiMtIm2kwrRS8hopblfwe0qm1CR8Brg2FeuFYXP+Z+upb6WFv9SKsT1zP5oyttmMBH5JB5PfAJrLzmxZFyJnK7q9ZJhU6Sn0R2HdfJ2vqJHsDA5upvBkpIl3edipVUxuyvSlVqdKBAI0ott+VWAzcTq9Og1BVOmOpRR7mgjW4dUUKBV2jhxOlLTu54nc0JuxOngqOPopqV7yR/kg5Ewarelqo2ROjYtjH7Py+9mDDvH9RuUEC4kHA+CWOcyhdM2HplgqbUkdPt9V0P6UXOb6kk3QP82oUuOe9Rf8H5SqsJX8Qf31ODb03Eh8ZL6xFrigq7Hn8qAS7ODUK6Bdwgb4Pf7aCaOz/LOArzGwGL78mylRk6mA4rT+uvSAQV7/gWdqbhxY/mYmUgBrAq61HHFUAHPXk43aULNPBvAIV+C2Bh10fkt8E4PQor/HRS8j2EqDVEN/nXzHdN27EHjbPx3Drxlkot4Y30sd7fQ+VhJO9ubj8JW1B4U66xzjor0cDEHNNoXo73G+MYvGxM234d7nJAYZ3VTi7D+CBxUwLQUVEJA1OacUvOd78ue5dRdEYurH9hORTl/HLE56QrkIBcfWh3YJ0w1q05oiYaP9AX+9CvSFOE4vJdKeBpALKCSISTQdchFfk9OAyhr3lDfSGU1hPIVcsHHBph+vdi80VBpOCNGZiQJllUMSAqy4p6+Ry4Svitk2h8CB+0EdA5MpOIRu5T/jtAtTHOn6h32cmmY5XVsS6eoYHDXvIPpvRwVrl0quOivkzJVLGeVKT4rpqtBfdilKMsOveR1T05cCX5Vr+iu1kgtMsTSZfmtL6Mlhjs1St7VCB2hqQ2QaIUrk0T/craBv+0wpHZYkXz/KH+GeyWJY xCTrb8Ep Ls46m+hMSGoB1Taix7Woe1q1tB5abiB6JQx+BkKIUOQ18/8EJTwmqeGw4FUUPejmxgm2VeunB7mLTwIQQln8jJ8f6tLZkKN/9ETQfNUSutdKrgLJPmzkfvRgy1ureq4umBVpwfwD2WU+TydEr5NwvgD6VlQbjOxsDz4xwR6SSHlh90lT/k/IDLJY6GjgVPtVC4+1kkHe5hQevF3wwqfbChYkb3dQvuGdBrZi82Z7VD2xhRX7cHWLNa6nCcrOJWBoe+SeOELVo1JFEN7/cKWhldyv08wwRaqfoIhVKigdJT6rP6uAlG3YDa0ucdfYKAtnTqbRMg2W89RKSiSrxURs68T3O1SPqtgAjEywg3bjh+uxXXc5m4VTPJ3BxkeOHKaQF2QEccrD2YYLVaIZXqBsTQvgPdLa1Q6Cku3RbZIo1n/a3eVxpHa5ANkn9w40wtJbsFL9pS52FjeU9n5HhTkKYjP2a6A== 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 [linus.walleij@linaro.org: Rebased and added new users of the variable names, address review comments] Signed-off-by: Linus Walleij --- kernel/fork.c | 60 +++++++++++++++++++++++++++++------------------------------ 1 file changed, 29 insertions(+), 31 deletions(-) diff --git a/kernel/fork.c b/kernel/fork.c index 7b9e1ad141baaeb158b1807ea9fc3ef246f5f3a7..8b8457562740c114c640a8cc230876f6a286b246 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,32 +232,32 @@ 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; int nr_charged = 0; - BUG_ON(vm->nr_pages != THREAD_SIZE / PAGE_SIZE); + BUG_ON(vm_area->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