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 49A62C5472F for ; Tue, 27 Aug 2024 18:23:00 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AA14F6B0085; Tue, 27 Aug 2024 14:22:59 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A51886B0092; Tue, 27 Aug 2024 14:22:59 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 918CC6B0093; Tue, 27 Aug 2024 14:22:59 -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 735B76B0085 for ; Tue, 27 Aug 2024 14:22:59 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 20F32818C3 for ; Tue, 27 Aug 2024 18:22:59 +0000 (UTC) X-FDA: 82498846878.01.83E92C4 Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91]) by imf05.hostedemail.com (Postfix) with ESMTP id 5A88310000A for ; Tue, 27 Aug 2024 18:22:56 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=zx2c4.com header.s=20210105 header.b=aRXc2LCc; spf=pass (imf05.hostedemail.com: domain of "SRS0=xpQ3=P2=zx2c4.com=Jason@kernel.org" designates 147.75.193.91 as permitted sender) smtp.mailfrom="SRS0=xpQ3=P2=zx2c4.com=Jason@kernel.org"; dmarc=pass (policy=quarantine) header.from=zx2c4.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1724782889; 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:dkim-signature; bh=6IIlC4dKeX0MR+87wiXBKWBHYPvMuntBVfDv8HHvaKU=; b=V/otrdLep+ftRj1IFuUC4/6exQvfB2JSUrdtNIuORzSWkKq0YLN019CXPWed3G9O/lLH34 KjkKcB5YdxhNuuD4IxGa1tAE0UE8ePeaIXx25pLRb99N7T/ruKOhQdRD+/oKgvD1g9Cl1f MEY79AL+0wVckfa8HBQXirsUerR/Bew= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1724782889; a=rsa-sha256; cv=none; b=bfGzP8116XRzxrGSTCZ3hRluctz6r2AhwKEs6naX6z3GPh2TyjBvonrZp4YLbWbLkVfba1 PAI74i7A05pOzfIhC7IM0tko9w/lc0OVpSYorGhcpqJYfBOvl6jh3u/6uWMdFROj/JI+5c pB0XQoXdTIZfJemwOsMY4MbDZ7FuKdk= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=zx2c4.com header.s=20210105 header.b=aRXc2LCc; spf=pass (imf05.hostedemail.com: domain of "SRS0=xpQ3=P2=zx2c4.com=Jason@kernel.org" designates 147.75.193.91 as permitted sender) smtp.mailfrom="SRS0=xpQ3=P2=zx2c4.com=Jason@kernel.org"; dmarc=pass (policy=quarantine) header.from=zx2c4.com Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id 85FFAA404F4; Tue, 27 Aug 2024 18:22:48 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id B2858C4AF09; Tue, 27 Aug 2024 18:22:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=zx2c4.com; s=20210105; t=1724782970; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=6IIlC4dKeX0MR+87wiXBKWBHYPvMuntBVfDv8HHvaKU=; b=aRXc2LCcclXS0jZM2Er3xb+9/MC6tyTrnANQKQqiX8JchcC5Hct3PDriYN6bmQyyvpVrZu SoRTJ7lKlZu8bysVWJFpmMCUsDdL0JJSqO5l7LQ2QGh4MGWrRpFxxzDVBg/4dd6rTXgykh bzknrtr7GCDH1d4bP7p3h1ixzFFzzvI= Received: by mail.zx2c4.com (ZX2C4 Mail Server) with ESMTPSA id 82078a25 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Tue, 27 Aug 2024 18:22:50 +0000 (UTC) Date: Tue, 27 Aug 2024 20:22:44 +0200 From: "Jason A. Donenfeld" 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 , 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: References: <5deb67090b214f0e6eae96b7c406546d1a16f89b.1724309198.git.christophe.leroy@csgroup.eu> <20240827180819.GB2049@sol.localdomain> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20240827180819.GB2049@sol.localdomain> X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 5A88310000A X-Stat-Signature: jkmojyw85zsdffubxw1rp9u6ibpbmri7 X-HE-Tag: 1724782976-795374 X-HE-Meta: U2FsdGVkX1//O8zb0SXHtq8qdunbLbG8oKTK9286Q84w0N7U4kwv3f5wwlgQeENoyBxxP19IEJc5yBR3Ka2xdkazDRLOL5URbPt7s+iMog6jEXWe1IkOptPDlR4cNqK9yWO1/6YXt0UCvHz1uId0qzEuXCLXrxjCvO+mgORlG1hXql32eWF9ErwE9zqN3mI2eQM3dGKg8m4eHHz62p+lHy/jTYRbHJ3+RT7x6svjbKKtKt8PFP7kBP4b5QvhiGyJuETEcOJy/aVXru1tdbi+3oGdA8BBmylPQQy90LX6DQl76BfsMOiI/e+EFBwkhdmvuCCJyhd3hhNAjyAKaIvJZRjA3iwfx7NHM4ATtMis/N0ySG4vtxbNmI8xNvXr6Pt78N9DA9y9p7sGwXMWebxDQHFmSuz+P16p/PAdK9p9OVFE3qH2AjdYAZ6LqFAIoeydoFlwipsh+oMOEH/d5O8Cupo0LZz6hrlL/FxnLZMuWEV0LmOgZJU8RHv6P5ymyD2FupsUoPt8NDQV7J3IfU9ARWojvR6N5HboKUgFVM/I+PVm3UYd4UflB7JOmZe9u0SLpgEtqsaqRWn6ax5KqSCLktth11PezejhBEYNcaUgFafzNF4djlBw9TwIXhdu5AE41P025SLMiLlkvFSJaFzg9lGsMJVD3qTTWO9Kd9IXXm/iiSt4Vg+jz9w/gqa4bNkPYpBtoNH6uWXI5ME540UTIvkhl//NExKM/wNlfaayRn03osE7ANn+ogIT5waMe3N1NcMiYIALMDZeYK+NVNazd7dO4V2yjI8KaZQbQaSDeaZa1fEAjeddlTa4JBgQktmvHiIlv8nnxoSZwMzO+ecTiq3y2qckOwC5uctN2iUGV7Op4nfdn5BAzn5mysqJmTYFPY5I5pSVGgKIDbFujnTO/I+5neqOrTPGfpSRLsLL1TkCVvC9S7OvfTwQvE+J3mYPanXwpXnZEuezceNLe/O IgmKDPod Qm6GzCOpuX21gOeNHO7bx8mp/sSb2uVHCracnNrAs+bu67wJ5bd/kp2bNQL0vn9BJ2cEEIK93ExIRxWMzw+TjtY7D+LzQB+2DjL4v+fGuQklB9DHDr1RKwYbejxHOPIx9dq/wxDSHY3cQNLlHeexnGPthBYdSWVlRQBUxkxm+dXtwfb17mGj+zW8hGoaFLpQvhTLrsedmMvTn099FphwW4L90t0rh0FgA0Jh5f27duRaOIozTIGCt+nLbnDPwAFjkey0tshx1ZzZrb4G/rehNMrXj0wWyWJ/aA2Tm2X3L2jzaqbSRZy9/nnBonECOMqP8S5T0Q8mTt3RNrGQMNP+/J2cFaeb1CwagqLlgyn5gLrO26CEUZa6eVNYktEUOJo3L7dU+cW1d0ScNm6hHqSddQE1NMUFqoPJBj1tEUEsD1jXJEWPIcKzKhs81r48rLV9MIs+5dBTKb+GG53/tlkD6PqGXR4frDxNoKTSVa+Kg1VsPcvA18eNTJIYWo0jsLlC+BS+7utao2IjJTo3NFmbCUq2tpH+QtxcyNj6zUiycbqLA1Ic= 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? Apparently not: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90701 -ffreestanding disables the most but still can generate calls to memcpy and memset, and the bug was closed as "RESOLVED INVALID". Surprising, but maybe it's one of those "functions are part of language" things.