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 2F2B6C3ABAC for ; Tue, 6 May 2025 07:58:16 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2F76E6B008C; Tue, 6 May 2025 03:58:05 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 013CA6B0093; Tue, 6 May 2025 03:58:04 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BADC06B008C; Tue, 6 May 2025 03:58:04 -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 8D2646B008A for ; Tue, 6 May 2025 03:58:04 -0400 (EDT) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id E6BE6CCA91 for ; Tue, 6 May 2025 07:58:05 +0000 (UTC) X-FDA: 83411729730.24.7BD15E2 Received: from mail-lf1-f46.google.com (mail-lf1-f46.google.com [209.85.167.46]) by imf22.hostedemail.com (Postfix) with ESMTP id 0BB23C000A for ; Tue, 6 May 2025 07:58:03 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=linaro.org header.s=google header.b=FLQ82gS4; dmarc=pass (policy=none) header.from=linaro.org; spf=pass (imf22.hostedemail.com: domain of linus.walleij@linaro.org designates 209.85.167.46 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=1746518284; 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=Jpb0elE+CHESRjvLzi0KBHeAlfmzDzdJq1qnsJeZpoQ=; b=C+/fwVrUAqxrrE8gUzgbJRzEh9O1yxs5Bwk5XcM61y271txlt7Jj23AOHZr9RBbEKbT4zP B/ySNNNChAMtn8qc/2z8HZCROnyZtGecX4zR6gTD/4tWf05BxLja9lfNNBcsdVw/uXlqxh 3a/oFoJ3j3FwVFDtw2ccbLIc9+kkHJs= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=linaro.org header.s=google header.b=FLQ82gS4; dmarc=pass (policy=none) header.from=linaro.org; spf=pass (imf22.hostedemail.com: domain of linus.walleij@linaro.org designates 209.85.167.46 as permitted sender) smtp.mailfrom=linus.walleij@linaro.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1746518284; a=rsa-sha256; cv=none; b=GwSEkZlbYpILLnQvbabPbAixVCxlAr2XfeKctuHokVw2CMHh9KgGtZHi9Fj11zBc0BMD7m Cv5zxEEI2QpbDFUYDOBXYlVlJGP+EZ1vSbQkV0K3z7SvUBsRzyUgLDTkxfYX/vk45sTDby YmPlcYaVRrE2YomKy1+KOtcw3JaUbYk= Received: by mail-lf1-f46.google.com with SMTP id 2adb3069b0e04-5499659e669so6286624e87.3 for ; Tue, 06 May 2025 00:58:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1746518282; x=1747123082; 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=Jpb0elE+CHESRjvLzi0KBHeAlfmzDzdJq1qnsJeZpoQ=; b=FLQ82gS4EJ0ukXa8WCvAm7lHWExQ00ibqmaPQI5yY2HaK2K9t7LyAFkdxBDnUhW7wu 6P9Bcf9dO7dneL02R0vJBZggMO7k/nDT+Zvg9CxHu3/gDyQZzuHbx7OqabO6v7x95cE2 0hWCIozr421P/KG4KLzkMGeRZaIlsXqIxIYgXSGkACZU8Qfcf3lSsEJEgZhPQ6uu/cdT uf10KUZI0BN9gqfqKVz8pRQZrIruGCX07xJi63t4wRFLsaWxhNnfAfouRLrZXfI+x3ez xdD9So3NG44+RCkC3pCxImYifdvUlgV5aTQB3aPby+l8ScbkHSYLjR8lGKRjvZmPHnEx Z4sA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746518282; x=1747123082; 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=Jpb0elE+CHESRjvLzi0KBHeAlfmzDzdJq1qnsJeZpoQ=; b=nTLV2JymwHWzLhd+5zmgFXCG+8jabYMnJaCW+45k7lZ3s+zx3UR7K+AJTHBya1kro0 2X99Jnr7Pam7Ka9WFhZw2UDsD8pSQLgCJa1+WuYGBIPpRxw4+cD8ruPHst1tYyJCMai7 y9eQE0DzBpsSwXXa5s4Q7Vd8E/Em0LGIURKg59LNt5WL+gyCQl0nUpHT6nECVa/mxDGE sIsnS356qKX3biKVMnv9/ouoMHh5kS8KO3XVyudPWQ4oh4T/3+AyUE6ZsXJpHG0V0mJ/ ZdRbLS2Lq9mbnTYKBW9XlEV8Rl+6SQdTwKOLKbURJTp51ggZpyEmprMqhPu+sD65huHF Lfvg== X-Forwarded-Encrypted: i=1; AJvYcCUAfKAR0WBA+iy7QYJWdrKZLkJiGHSgEaro19o3BJ3TQgVdVNNgQitcvZmvnGWENL2c1YRwZT2Xvg==@kvack.org X-Gm-Message-State: AOJu0YwTXkMQ4dBaaCGQ1AHwPofQsgnUUvN3UglCj0Z2ZD3oYj8fqowl b3eLe/FWC8/XAyvZXxQT58TtL7e2c1/nm1sEajfGhhamjnrpfOYJzqrvRNOQanXNuqhx9KWb+Fr b X-Gm-Gg: ASbGnct6q20xKzgudmHtAmi2tv5itY46R/q4lp40z4y1M/9G96yOvs2eNspwxHWQ7jc AIGs9FZ90FISJY+lrEMy7+ZTqW5jsv5+X42aqnPDZIxDXPOEvQFn3I1ybKh1KokLF91XaPo5jTv EcDfCi+CUfnqcvwFfWOX51BrGNcoqzEByGucQrQaZybwIG93gNU37ySG4I+QLP9mN4T6g/YPjnr lAXoKjPMaugca7ZUje4ju76kcNYdfST53+6/BMzynz5y8LGVtTjafedzeALIQ0BSrxhU641xTUg xnD8nfVtEKQxQe+JAnQivCxrioTRIlCz0qj7d/O93O+DYoJGCFM= X-Google-Smtp-Source: AGHT+IG7oF+v1YsagabSKKwa3kjO+Lpw/O6F0JawewPipZ+o35Ub7sSpQGrfMlHjjh2MPWgR+oE+7A== X-Received: by 2002:a05:6512:1296:b0:545:cd5:84d9 with SMTP id 2adb3069b0e04-54eac1f47bfmr4326578e87.12.1746518282126; Tue, 06 May 2025 00:58:02 -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.58.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 May 2025 00:58:01 -0700 (PDT) From: Linus Walleij Date: Tue, 06 May 2025 09:57:57 +0200 Subject: [PATCH 5/5] fork: zero vmap stack using clear_page() instead of memset() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20250506-fork-fixes-v1-5-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: zcgxj4utn88be8b5m4ob8pujmrfnbfmm X-Rspamd-Queue-Id: 0BB23C000A X-Rspam-User: X-Rspamd-Server: rspam05 X-HE-Tag: 1746518283-587846 X-HE-Meta: U2FsdGVkX1+02qrBU+evOnpIhcZRw2FzQkWNnVrXPbBmx28tThYFjJdCdC+4AayW+6Zs1q8QoaOGktE4r88TQa9nYVs9N8I+IHLiOtJ73KbEZxnosO5Y5v4JZWvOmejKe3yR/wGtj8oMpb+71VI0IMabTQL0cYm8X6dnSuO1H89O3lXtveOiTywPcEsvuWTnmxl17B1rLcSWOajeYxvbaLqEpz6bujjxZSGZme1snRQoAzNPr7LMX5B6cV3gy3vovOv++i1gZ8F6St/iRNlMAriav1C32flXE+V6uFxo22qC49oL2VD6QZJTTAmf7OxvZ3GdLRVq/tj5qTedUEfo+mtqwDsTJNSbGY5n6wspa1TSL7mKOD6V5zamF9YXLdpiGL0hYdfdeD5nITQh4AFNF8FcUXTWo9QfrXFHVBSBQmb30zjpPkgsBY7HEk36x6a6apuRxgiXWjRiPrKQ4LPULnqzdX6o8fp/4kX1Bh5RNVQKT0JhSo7RADEnIiEk93V0lTh507SiItjUS4gORtCbQU2kn6Gw+IEU2LKx0EhgwncVqtAI90UnaoiDFf1NZLgDUJ7m2CXMGnmEthM2KnIhU29TskfUrnyB7xrs1nbTaw8RY/MOyDg1S0UBSArza6Jf8jDJ4Ea8PD5I6rG76eJutS1ELT9Yy47MILzH35RgDWcQnUqxsXStCaYb5Cqi6CBQbp/aqmWU8mF0R4QHu8CdFqOzsJNeIXVnopjuglWQCnR5jWzqvYeklExXYaAgVuZsYPGimpfHSwXwfsqOnbD0h/Iwc9TlbYYXfzsL8dJxxcT+lk6FJaZMngjotkvg9YYUNMF+ZF7T8t0FfgUcV9k+6IXKhtjRyZ8h0dTw9Z0V5o0Dt8S46c1Nm69P5C4H5LWPzXbkndUdLlirc+c+C1jgNZ5AUThFgjastGTf1CJrsUSl8ufZ37mYYVAzG5+xwTQ7JKzTWGIjhZYGxphiED5 FSlbPbKY I2Q2Nojeu9x5MGYtbg3+J2Yz+Qg== 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 Do not zero the whole span of the stack, but instead only the pages that are part of the vm_area. As several architectures have optimized implementations of clear_page(), this will give the architecture a clear idea of what is going on and will speed up the clearing operation. Signed-off-by: Pasha Tatashin Link: https://lore.kernel.org/20240311164638.2015063-7-pasha.tatashin@soleen.com [Rebased, also skipped intermediary helper variable nr_pages] Signed-off-by: Linus Walleij --- kernel/fork.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/kernel/fork.c b/kernel/fork.c index 2350ba55db2a5f5675f810d7214252dd8a1fae98..7710b7ded3000c77e8d0871bb6bb5916d90aa4ec 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -271,7 +271,7 @@ static int alloc_thread_stack_node(struct task_struct *tsk, int node) { struct vm_struct *vm_area; void *stack; - int i; + int i, j; for (i = 0; i < NR_CACHED_STACKS; i++) { vm_area = this_cpu_xchg(cached_stacks[i], NULL); @@ -289,7 +289,8 @@ static int alloc_thread_stack_node(struct task_struct *tsk, int node) stack = kasan_reset_tag(vm_area->addr); /* Clear stale pointers from reused stack. */ - memset(stack, 0, THREAD_SIZE); + for (j = 0; j < vm_area->nr_pages; j++) + clear_page(page_address(vm_area->pages[j])); tsk->stack_vm_area = vm_area; tsk->stack = stack; -- 2.49.0