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 E61F8C54742 for ; Tue, 27 Aug 2024 22:57:19 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 68B906B007B; Tue, 27 Aug 2024 18:57:19 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 63BAE6B0083; Tue, 27 Aug 2024 18:57:19 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 52A6D6B0085; Tue, 27 Aug 2024 18:57:19 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 338A06B007B for ; Tue, 27 Aug 2024 18:57:19 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 8EC1D41B4C for ; Tue, 27 Aug 2024 22:57:18 +0000 (UTC) X-FDA: 82499538156.02.12FFC12 Received: from gate.crashing.org (gate.crashing.org [63.228.1.57]) by imf20.hostedemail.com (Postfix) with ESMTP id 9484E1C0009 for ; Tue, 27 Aug 2024 22:57:15 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=none; spf=pass (imf20.hostedemail.com: domain of segher@kernel.crashing.org designates 63.228.1.57 as permitted sender) smtp.mailfrom=segher@kernel.crashing.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1724799393; 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: in-reply-to:in-reply-to:references:references; bh=Z72GF+4m8o7arXZKerpWLPf9I3/Jl2YWddN3COzPwAE=; b=ZCDnS7EPOAgpjxVrjtTA/h5B8sYb85IvypNpYolUmgXg3uu02lTAoWf0lTZs+gW2pNY0WF rjYzbV7s4icKxmkslgKDsUKocaTHjYbFDL/fJIYkNTHJEZs/SFkZi0DftgwB6PVZTbEvaZ VnT1hnBh5qtrMEB8dr7B2C25rM+s/9M= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=none; spf=pass (imf20.hostedemail.com: domain of segher@kernel.crashing.org designates 63.228.1.57 as permitted sender) smtp.mailfrom=segher@kernel.crashing.org; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1724799393; a=rsa-sha256; cv=none; b=a0dhEv5j7XaQ+/VoCPx7yGnpuUoPPb4qjO/A+8X8/fZsDMihnjElsNCyG6CEHhvy+tkDGS COBGw7oxGO7yVyijY/uGa4eTJx5MOGjqpv0huSzAbZqBDrV8ijczIUUswBAWCbynk5tPc0 v8rWIF39Pb9Z4aZnTdh4M8pPh/xIizU= Received: from gate.crashing.org (localhost.localdomain [127.0.0.1]) by gate.crashing.org (8.14.1/8.14.1) with ESMTP id 47RMrWeM032045; Tue, 27 Aug 2024 17:53:32 -0500 Received: (from segher@localhost) by gate.crashing.org (8.14.1/8.14.1/Submit) id 47RMrUKh032044; Tue, 27 Aug 2024 17:53:30 -0500 X-Authentication-Warning: gate.crashing.org: segher set sender to segher@kernel.crashing.org using -f Date: Tue, 27 Aug 2024 17:53:30 -0500 From: Segher Boessenkool To: Eric Biggers Cc: Christophe Leroy , Michael Ellerman , Nicholas Piggin , Naveen N Rao , Andy Lutomirski , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H. Peter Anvin" , "Theodore Ts'o" , "Jason A. Donenfeld" , Arnd Bergmann , Andrew Morton , Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , Vincenzo Frascino , Shuah Khan , linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-arch@vger.kernel.org, linux-mm@kvack.org, linux-trace-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org Subject: Re: [PATCH v2 05/17] vdso: Avoid call to memset() by getrandom Message-ID: <20240827225330.GC29862@gate.crashing.org> References: <5deb67090b214f0e6eae96b7c406546d1a16f89b.1724309198.git.christophe.leroy@csgroup.eu> <20240827180819.GB2049@sol.localdomain> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240827180819.GB2049@sol.localdomain> User-Agent: Mutt/1.4.2.3i X-Rspamd-Server: rspam03 X-Rspam-User: X-Rspamd-Queue-Id: 9484E1C0009 X-Stat-Signature: rwg9xftobck6mazezrrk3xy48hedb8xc X-HE-Tag: 1724799435-643715 X-HE-Meta: U2FsdGVkX1+qr4akceTX6uIiDUQg5NGFtEBsxpf1o79ojT2JJlSv0xE2Ie8jpADBv8um8sEjl9ylWwkgbF8LxyIFde4m4L94RIdFnFFR0xScTBzJYsI5ODZhg7M605GzgZog2jUrqPvlu4MTv+tn9/xgjomjzytm6FxLHs2F2Tgm+1PrZEKokoJwP5jzb69T4lrqPFSzXUyCBCDzS8lmMy7SFzA2IK9lTQd5H/UAqErpP39vtDcVVYifG5EYDTxDrH0Wq6mjKQOPw5jpl2nUeabM4feR3oYxJH9NJkHT3qdtjDPBnK8/9YV/q6GTIYffU+9EUYP5UtGodIEtY9g6xbV305aB81PHD7zgSzysC2EarSnXgd1zmuzQpsNVWorSuwEElTviwiYPtdh5wTtxzK6H85v1VfAZR4ZduFe59/reEuA03BFP+1w5lVdC6Jfsb0QtXn4E0+zvFO96REWbco78SQnz+7cQwgDFjPbzIAhYTmeSSCneGt/kwfE+VLDKsmFyFq4KZeSWbN1+fb8hPkqMIaYA3mV+wvLfY6LyZvSNFBBhNXv04O35hQlJ90lj9wEmLWziw2pcQHNiRZmBXVzFfdUkHzjT5uLDzaUrmHrQy27mQe+i1c6mOHq/1iG7/Tqv8+wIrd+mr2bxSpc8PXjHLq7NXE6JAXlixWDcgaJYq/mFU1gbocEmeuUX+eCtJj9a4jF/8YEKoBddRm0LiF6rA23bOt/XN0sjqciPmM6wf74YxQluf4bjz7g1OtjNZ6Z99TY/ffU2O5pPB57f5jER8XZos09VBWB/pXVF2LDuhI3n+SbyPakQEwgFETzt78HjJ2ND3oylQ7IKDwsqqO0gCaUScBSMGy5rHlw52KMEx5AYcdyHrVJne+DJtOdsN9cAZ5WEmo4WWriYA8wr3/fM+ZdXdZB8k5hBuNeIMI6BxOlBuSnUMNNryerstl3UYKobm+WA3us68u3jJfi xkCu1511 wFfktTLjsS9pPhjdsDgTWc/JE/fyKC8rhtG4K5LGSSDlbZMCLqRZs8iOXSs2w/z3YJhFUbgwZPvitmdryUbE97KbG7X88P9YcM/qEcAtvg62xUeP/Naw23hSYxvWP5OP8DEzrxTI2Z1nZMqnKp55mIIb714582RvT4A1R 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: On Tue, Aug 27, 2024 at 11:08:19AM -0700, Eric Biggers wrote: > On Thu, Aug 22, 2024 at 09:13:13AM +0200, Christophe Leroy wrote: > > With the current implementation, __cvdso_getrandom_data() calls > > memset(), which is unexpected in the VDSO. > > > > Rewrite opaque data initialisation to avoid memset(). > > > > Signed-off-by: Christophe Leroy > > --- > > lib/vdso/getrandom.c | 15 ++++++++++----- > > 1 file changed, 10 insertions(+), 5 deletions(-) > > > > diff --git a/lib/vdso/getrandom.c b/lib/vdso/getrandom.c > > index cab153c5f9be..4a56f45141b4 100644 > > --- a/lib/vdso/getrandom.c > > +++ b/lib/vdso/getrandom.c > > @@ -4,6 +4,7 @@ > > */ > > > > #include > > +#include > > #include > > #include > > #include > > @@ -74,11 +75,15 @@ __cvdso_getrandom_data(const struct vdso_rng_data *rng_info, void *buffer, size_ > > u32 counter[2] = { 0 }; > > > > if (unlikely(opaque_len == ~0UL && !buffer && !len && !flags)) { > > - *(struct vgetrandom_opaque_params *)opaque_state = (struct vgetrandom_opaque_params) { > > - .size_of_opaque_state = sizeof(*state), > > - .mmap_prot = PROT_READ | PROT_WRITE, > > - .mmap_flags = MAP_DROPPABLE | MAP_ANONYMOUS > > - }; > > + struct vgetrandom_opaque_params *params = opaque_state; > > + int i; > > + > > + params->size_of_opaque_state = sizeof(*state); > > + params->mmap_prot = PROT_READ | PROT_WRITE; > > + params->mmap_flags = MAP_DROPPABLE | MAP_ANONYMOUS; > > + for (i = 0; i < ARRAY_SIZE(params->reserved); i++) > > + params->reserved[i] = 0; > > + > > return 0; > > } > > Is there a compiler flag that could be used to disable the generation of calls > to memset? -fno-tree-loop-distribute-patterns . But, as always, read up on it, see what it actually does (and how it avoids your problem, and mostly: learn what the actual problem *was*!) Have fun, Segher