linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Segher Boessenkool <segher@kernel.crashing.org>
To: Eric Biggers <ebiggers@kernel.org>
Cc: Christophe Leroy <christophe.leroy@csgroup.eu>,
	Michael Ellerman <mpe@ellerman.id.au>,
	Nicholas Piggin <npiggin@gmail.com>,
	Naveen N Rao <naveen@kernel.org>,
	Andy Lutomirski <luto@kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	x86@kernel.org, "H. Peter Anvin" <hpa@zytor.com>,
	"Theodore Ts'o" <tytso@mit.edu>,
	"Jason A. Donenfeld" <Jason@zx2c4.com>,
	Arnd Bergmann <arnd@arndb.de>,
	Andrew Morton <akpm@linux-foundation.org>,
	Steven Rostedt <rostedt@goodmis.org>,
	Masami Hiramatsu <mhiramat@kernel.org>,
	Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
	Vincenzo Frascino <vincenzo.frascino@arm.com>,
	Shuah Khan <shuah@kernel.org>,
	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
Date: Tue, 27 Aug 2024 17:53:30 -0500	[thread overview]
Message-ID: <20240827225330.GC29862@gate.crashing.org> (raw)
In-Reply-To: <20240827180819.GB2049@sol.localdomain>

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 <christophe.leroy@csgroup.eu>
> > ---
> >  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 <linux/minmax.h>
> > +#include <linux/array_size.h>
> >  #include <vdso/datapage.h>
> >  #include <vdso/getrandom.h>
> >  #include <vdso/unaligned.h>
> > @@ -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

  parent reply	other threads:[~2024-08-27 23:00 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-08-22  7:13 [PATCH v2 00/17] Wire up getrandom() vDSO implementation on powerpc Christophe Leroy
2024-08-22  7:13 ` [PATCH v2 01/17] asm-generic/unaligned.h: Extract common header for vDSO Christophe Leroy
2024-08-26  7:20   ` Jason A. Donenfeld
2024-08-26  7:32     ` Christophe Leroy
2024-08-22  7:13 ` [PATCH v2 02/17] vdso: Clean header inclusion in getrandom Christophe Leroy
2024-08-26  8:07   ` Jason A. Donenfeld
2024-08-26  8:37     ` Christophe Leroy
2024-08-26  8:58       ` Jason A. Donenfeld
2024-08-26 10:45         ` Christophe Leroy
2024-08-26 13:17           ` Jason A. Donenfeld
2024-08-26 13:24           ` Thomas Gleixner
2024-08-22  7:13 ` [PATCH v2 03/17] vdso: Add __arch_get_k_vdso_rng_data() Christophe Leroy
2024-08-26  7:24   ` Jason A. Donenfeld
2024-08-22  7:13 ` [PATCH v2 04/17] vdso: Add missing c-getrandom-y in Makefile Christophe Leroy
2024-08-26  7:40   ` Jason A. Donenfeld
2024-08-22  7:13 ` [PATCH v2 05/17] vdso: Avoid call to memset() by getrandom Christophe Leroy
2024-08-26  8:01   ` Jason A. Donenfeld
2024-08-27 18:08   ` Eric Biggers
2024-08-27 18:22     ` Jason A. Donenfeld
2024-08-27 22:53     ` Segher Boessenkool [this message]
2024-08-28 11:18       ` Jason A. Donenfeld
2024-08-28 12:24         ` Arnd Bergmann
2024-08-28 12:26           ` Jason A. Donenfeld
2024-08-28 12:51             ` Segher Boessenkool
2024-08-28 12:45           ` Segher Boessenkool
2024-08-28 15:40             ` Ard Biesheuvel
2024-08-28 16:20               ` Segher Boessenkool
2024-08-28 17:12                 ` Ard Biesheuvel
2024-08-28 17:25                   ` Segher Boessenkool
2024-08-29 17:36                     ` Christophe Leroy
2024-08-29 18:02                       ` Segher Boessenkool
2024-08-29 18:50                         ` Christophe Leroy
2024-08-30 10:01                         ` Michael Ellerman
2024-08-28 12:33         ` Segher Boessenkool
2024-08-28 12:51           ` Jason A. Donenfeld
2024-08-22  7:13 ` [PATCH v2 06/17] vdso: Change getrandom's generation to unsigned long Christophe Leroy
2024-08-26  7:50   ` Jason A. Donenfeld
2024-08-26  8:01     ` Christophe Leroy
2024-08-26  8:16       ` Jason A. Donenfeld
2024-08-26  9:43       ` Thomas Gleixner
2024-08-26  9:48         ` Jason A. Donenfeld
2024-08-26 10:20         ` LEROY Christophe
2024-08-22  7:13 ` [PATCH v2 07/17] mm: Define VM_DROPPABLE for powerpc/32 Christophe Leroy
2024-08-26  9:53   ` kernel test robot
2024-08-26 10:13   ` kernel test robot
2024-08-26 21:34   ` kernel test robot
2024-08-22  7:13 ` [PATCH v2 08/17] powerpc: Add little endian variants of LWZX_BE and STWX_BE Christophe Leroy
2024-08-22  7:13 ` [PATCH v2 09/17] powerpc/vdso32: Add crtsavres Christophe Leroy
2024-08-22  7:13 ` [PATCH v2 10/17] powerpc/vdso: Refactor CFLAGS for CVDSO build Christophe Leroy
2024-08-22  7:13 ` [PATCH v2 11/17] powerpc/vdso: Wire up getrandom() vDSO implementation Christophe Leroy
2024-08-22  7:13 ` [PATCH v2 12/17] selftests: vdso: Fix powerpc64 vdso_config Christophe Leroy
2024-08-22  7:13 ` [PATCH v2 13/17] selftests: vdso: Don't hard-code location of vDSO sources Christophe Leroy
2024-08-26  7:26   ` Jason A. Donenfeld
2024-08-22  7:13 ` [PATCH v2 14/17] selftests: vdso: Make test_vdso_getrandom look for the right vDSO function Christophe Leroy
2024-08-26  7:28   ` Jason A. Donenfeld
2024-08-26  7:35     ` LEROY Christophe
2024-08-22  7:13 ` [PATCH v2 15/17] selftests: vdso: Fix build of test_vdso_chacha Christophe Leroy
2024-08-26  7:33   ` Jason A. Donenfeld
2024-08-22  7:13 ` [PATCH v2 16/17] selftests: vdso: Make VDSO function call more generic Christophe Leroy
2024-08-26  7:37   ` Jason A. Donenfeld
2024-08-26  7:48     ` LEROY Christophe
2024-08-22  7:13 ` [PATCH v2 17/17] selftests: vdso: Add support for vdso_test_random for powerpc Christophe Leroy
2024-08-26  7:19 ` [PATCH v2 00/17] Wire up getrandom() vDSO implementation on powerpc Jason A. Donenfeld
2024-08-26  8:23   ` Jason A. Donenfeld

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240827225330.GC29862@gate.crashing.org \
    --to=segher@kernel.crashing.org \
    --cc=Jason@zx2c4.com \
    --cc=akpm@linux-foundation.org \
    --cc=arnd@arndb.de \
    --cc=bp@alien8.de \
    --cc=christophe.leroy@csgroup.eu \
    --cc=dave.hansen@linux.intel.com \
    --cc=ebiggers@kernel.org \
    --cc=hpa@zytor.com \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-trace-kernel@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=luto@kernel.org \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=mhiramat@kernel.org \
    --cc=mingo@redhat.com \
    --cc=mpe@ellerman.id.au \
    --cc=naveen@kernel.org \
    --cc=npiggin@gmail.com \
    --cc=rostedt@goodmis.org \
    --cc=shuah@kernel.org \
    --cc=tglx@linutronix.de \
    --cc=tytso@mit.edu \
    --cc=vincenzo.frascino@arm.com \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).