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 C9F15C54ED1 for ; Wed, 28 Aug 2024 11:18:51 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4C6566B0085; Wed, 28 Aug 2024 07:18:51 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 44EB46B0089; Wed, 28 Aug 2024 07:18:51 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2C87E6B0095; Wed, 28 Aug 2024 07:18:51 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 0BCB16B0085 for ; Wed, 28 Aug 2024 07:18:51 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 8BA5F413EB for ; Wed, 28 Aug 2024 11:18:50 +0000 (UTC) X-FDA: 82501406820.01.6F5D49F Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55]) by imf01.hostedemail.com (Postfix) with ESMTP id 1BDBE4000E for ; Wed, 28 Aug 2024 11:18:46 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=zx2c4.com header.s=20210105 header.b=ie1ZgaJb; spf=pass (imf01.hostedemail.com: domain of "SRS0=8W/7=P3=zx2c4.com=Jason@kernel.org" designates 145.40.73.55 as permitted sender) smtp.mailfrom="SRS0=8W/7=P3=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=1724843840; 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=TaIlxacxM0cvax8nGT0Wo3sn3OzyvoPLEHrLd84XeNU=; b=PaNVTTAuyrdG6141aecdRroj+tvtFJvxPSa716tTVbgJIw59vqr/Mj6W/gUgkLFBglBZM5 08727ZYMBTqIf9vJrGGN2ZRBTfN2t3gCie91bf75j2TvGy8B2ed5PtDFg/vkFLynOrsbNT 5/VJy1+COxaIqVblGHu5nhShSR9I89A= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1724843840; a=rsa-sha256; cv=none; b=yBK+3vCuUS2ksehQhKPcZbx7yddJZQN6NL/nkTf04e4g9yNnnqoZkyqv9E1cpR0ZslLPtB 1leBLRGT0gB9GqlkWguZp8p0GiBLZynmBaiiriRxqQcluwjiZLUMVy1TJI9y0v9gUNNtQv Npy0ZWblMhM5whmctPZ3kPt4uumsNX8= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=zx2c4.com header.s=20210105 header.b=ie1ZgaJb; spf=pass (imf01.hostedemail.com: domain of "SRS0=8W/7=P3=zx2c4.com=Jason@kernel.org" designates 145.40.73.55 as permitted sender) smtp.mailfrom="SRS0=8W/7=P3=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 sin.source.kernel.org (Postfix) with ESMTP id 9BEABCE1774; Wed, 28 Aug 2024 11:18:42 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E0F77C98EC1; Wed, 28 Aug 2024 11:18:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=zx2c4.com; s=20210105; t=1724843916; 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=TaIlxacxM0cvax8nGT0Wo3sn3OzyvoPLEHrLd84XeNU=; b=ie1ZgaJbmdO0NFZiWnbQxMHvES+WVoJwzMG9ptpU3Emt2rn3BokeH+49oxcj4dV6dn2A7R OZIoYXalY4Ws4iv74BUjZGRKqr/jYLeyEjR6fhELEgh04xz8/D5eJuiLFmdCA7UTqCRd8K hMYFoVGZZlHMLnB3FsT4kBzzeg3/4HU= Received: by mail.zx2c4.com (ZX2C4 Mail Server) with ESMTPSA id 8e8b7172 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Wed, 28 Aug 2024 11:18:35 +0000 (UTC) Date: Wed, 28 Aug 2024 13:18:34 +0200 From: "Jason A. Donenfeld" To: Segher Boessenkool Cc: Eric Biggers , 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> <20240827225330.GC29862@gate.crashing.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20240827225330.GC29862@gate.crashing.org> X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 1BDBE4000E X-Stat-Signature: jx3k56rmszt7skpq5fyctwog7zhweehi X-HE-Tag: 1724843926-398425 X-HE-Meta: U2FsdGVkX1/YDj9tD47ymG0vXY1KEq4sWMbTQ+YxOxTFA7pMxdgv5QjF/CKVsgM9vPkW+uN9+9juZQ6VL9S8/5+WFU+kFaoyKt5lZQY8bmq/fBaFcOWh2Y5TBLUwBFkRfLa+wbMSS7V6rsciI7bWFWKXMReoyJEcvjiHG4Zg7fQWuMZRA57MsVna8zsmQMUuQQ3bsUd+Ttkmc/dv9JI0q8zwtym2ZErt/nswBff2Rh8/rmuI9GVBaTnGWrCMJRJrkZGD3QS8FMFVBnin7Dsdyx65B2a395tszu693ad4K2noVXN34g44E9ohy+S2ClKRgr+6ZV3zqz7dESvOcOcfnK82COsQWLluoZutOn8L+VBAPbLLrAfIXFO9A02LEE27KUDjSYVSc2EEGB6uqEeaOEiaKVbwJYXU6aR/GzMDuxN26lym3GnMdcfdvBHcJIibt3yjb0EVRV7DeykxIcQ3AhXEQH1fBRxOzKCzSTVPEhgp8DtEnWtIA1JYb3zMjiYZgq5hJ+hyyWohpWdFLCt2uI0uH7OTZUzqzTYXRk77zEpGTmQ6o+7D9TFKCR6xlnsFUPYMz0vecpAKV2mUTF9r0ZrNApL6/osaJNInmVfIqGriMe9feRvZoAQ1SSRb/UVu7gAyM6sp8UyLWLWU+/9auktRf94i7OcZiK5fM8UWobqCsFKavUbZQ9ljDr2UXA/uFtPgnKjVTv2fCeezsAF/5zNpUDbiiLh7Zpd7XTTiv+cG3Tvew/yV8MS9i7QM0zYeh4W2iCyrt8z3eH+f5tdyBJqeaRytlbMBz0hCjzDUTeGrWW2GbWOwu+ptJ6DOmquC6nE394DwodWcjNqM2BzQbh8LyW6i/lQIOye47q3DN/ACpxiDBo1o6pECS6+9ces97d06jLMZmJGjrYYNCZDWgMpG4laXT0IogmudRQQLeoPopGCpnAlvtRB+jFJVyDNbJKLj1Ht89kMRexquTb6 aq1Mx7qH gu98J3/tpO+5EKXWa1KIC1FRC7xT+q8sDiG/o6raac87AGPAmvPY3390a+3aLU226R7QLHP41uz8yy3JGHG0ZIOkLbMOseYJRJIO+/j4Wodi3RiSOl5kw48ussbNfVwsUn+NRcQ4/k0+XY8zx5XY/dhG9TzjgJMNKvmcPyUjOKDXae4UOy+xV7uSNgW9epL8RvpDw/BT5xMtOpdaT/e0WLA4I5+lEXY8+QHaBUpbvT1httAnja52ngKdihyJtPBF/DBqWwveK1/QB2q6NRSNUtS/gZvpGlcD6NdRTGm/+/yXlpUCNZMsVLKieJAbW2AzsQZw6PylNcjhzF0OIjb/B37AhtXfmOthskvesE0ltsj6SDOWEQnjQeoQCoGKcJIHmAfMoXCH54TWEpt/A7XLlUToJ+yoznzNP3nRDXhqkmOtJpNADOvW/Fa4Ga9u8AkqKR1UieptGl6vCGSvSeW6/tU99Eg/OpaNsntPAsTzOa9pyj/A= 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 05:53:30PM -0500, Segher Boessenkool wrote: > 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*!) This might help with various loops, but it doesn't help with the matter that this patch fixes, which is struct initialization. I just tried it with the arm64 patch to no avail.