From: David Laight <david.laight.linux@gmail•com>
To: Eric Biggers <ebiggers@kernel•org>
Cc: Christoph Hellwig <hch@lst•de>,
Andrew Morton <akpm@linux-foundation•org>,
Richard Henderson <richard.henderson@linaro•org>,
Matt Turner <mattst88@gmail•com>,
Magnus Lindholm <linmag7@gmail•com>,
Russell King <linux@armlinux•org.uk>,
Catalin Marinas <catalin.marinas@arm•com>,
Will Deacon <will@kernel•org>,
Huacai Chen <chenhuacai@kernel•org>,
WANG Xuerui <kernel@xen0n•name>,
Madhavan Srinivasan <maddy@linux•ibm.com>,
Michael Ellerman <mpe@ellerman•id.au>,
Nicholas Piggin <npiggin@gmail•com>,
"Christophe Leroy (CS GROUP)" <chleroy@kernel•org>,
Paul Walmsley <pjw@kernel•org>,
Palmer Dabbelt <palmer@dabbelt•com>,
Albert Ou <aou@eecs•berkeley.edu>,
Alexandre Ghiti <alex@ghiti•fr>,
Heiko Carstens <hca@linux•ibm.com>,
Vasily Gorbik <gor@linux•ibm.com>,
Alexander Gordeev <agordeev@linux•ibm.com>,
Christian Borntraeger <borntraeger@linux•ibm.com>,
Sven Schnelle <svens@linux•ibm.com>,
"David S. Miller" <davem@davemloft•net>,
Andreas Larsson <andreas@gaisler•com>,
Richard Weinberger <richard@nod•at>,
Anton Ivanov <anton.ivanov@cambridgegreys•com>,
Johannes Berg <johannes@sipsolutions•net>,
Thomas Gleixner <tglx@kernel•org>, 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>,
Herbert Xu <herbert@gondor•apana.org.au>,
Dan Williams <dan.j.williams@intel•com>, Chris Mason <clm@fb•com>,
David Sterba <dsterba@suse•com>, Arnd Bergmann <arnd@arndb•de>,
Song Liu <song@kernel•org>, Yu Kuai <yukuai@fnnas•com>,
Li Nan <linan122@huawei•com>, Theodore Ts'o <tytso@mit•edu>,
"Jason A. Donenfeld" <Jason@zx2c4•com>,
linux-alpha@vger•kernel.org, linux-kernel@vger•kernel.org,
linux-arm-kernel@lists•infradead.org, loongarch@lists•linux.dev,
linuxppc-dev@lists•ozlabs.org, linux-riscv@lists•infradead.org,
linux-s390@vger•kernel.org, sparclinux@vger•kernel.org,
linux-um@lists•infradead.org, linux-crypto@vger•kernel.org,
linux-btrfs@vger•kernel.org, linux-arch@vger•kernel.org,
linux-raid@vger•kernel.org
Subject: Re: [PATCH 26/27] random: factor out a __limit_random_u32_below helper
Date: Thu, 12 Mar 2026 08:38:53 +0000 [thread overview]
Message-ID: <20260312083853.01dc18d3@pumpkin> (raw)
In-Reply-To: <20260311222935.GA3161@quark>
On Wed, 11 Mar 2026 15:29:35 -0700
Eric Biggers <ebiggers@kernel•org> wrote:
> On Wed, Mar 11, 2026 at 08:03:58AM +0100, Christoph Hellwig wrote:
> > Factor out the guts of __get_random_u32_below into a new helper,
> > so that callers with their own prng state can reuse this code.
> >
> > Signed-off-by: Christoph Hellwig <hch@lst•de>
>
> I think I'd prefer that the test just uses the mod operation instead,
> like many of the existing tests do:
>
> prandom_u32_state(&rng) % ceil
Or possibly what the old code used:
(prandom_u32_state(&rnd) * (u64)ceil) >> 32
Which distributes the values evenly across the range although
some values happen 1 more time than others.
I suspect that is good enough for a lot of the users of the cryptographic
random number generator as well.
David
>
> Yes, when ceil isn't a power of 2 the result isn't uniformly
> distributed. But that's perfectly fine for these tests, especially with
> the values of ceil being used being far smaller than U32_MAX.
>
> There's been an effort to keep the cryptographic random number generator
> (drivers/char/random.c and include/linux/random.h) separate from the
> non-cryptographic random number generator (lib/random32.c and
> include/linux/prandom.h). This patch feels like it's going in a
> slightly wrong direction, where random.c gains a function that's used
> with both cryptographic and non-cryptographic random numbers.
>
> And if someone actually needs a fully unform distribution, then they'd
> probably want cryptographic random numbers as well.
>
> So I'm not sure the proposed combination of "fully uniform
> non-cryptographic random numbers" makes much sense.
>
> Plus the '% ceil' implementation is much easier to understand.
>
> - Eric
>
next prev parent reply other threads:[~2026-03-12 8:39 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-11 7:03 cleanup the RAID5 XOR library v2 Christoph Hellwig
2026-03-11 7:03 ` [PATCH 01/27] xor: assert that xor_blocks is not from preemptible user context Christoph Hellwig
2026-03-11 7:03 ` [PATCH 02/27] arm/xor: remove in_interrupt() handling Christoph Hellwig
2026-03-11 7:03 ` [PATCH 03/27] um/xor: cleanup xor.h Christoph Hellwig
2026-03-11 8:45 ` Richard Weinberger
2026-03-11 7:03 ` [PATCH 04/27] xor: move to lib/raid/ Christoph Hellwig
2026-03-11 7:03 ` [PATCH 05/27] xor: small cleanups Christoph Hellwig
2026-03-11 7:03 ` [PATCH 06/27] xor: cleanup registration and probing Christoph Hellwig
2026-03-11 7:03 ` [PATCH 07/27] xor: split xor.h Christoph Hellwig
2026-03-11 7:03 ` [PATCH 08/27] xor: remove macro abuse for XOR implementation registrations Christoph Hellwig
2026-03-11 7:03 ` [PATCH 09/27] xor: move generic implementations out of asm-generic/xor.h Christoph Hellwig
2026-03-11 7:03 ` [PATCH 10/27] alpha: move the XOR code to lib/raid/ Christoph Hellwig
2026-03-16 22:12 ` Magnus Lindholm
2026-03-11 7:03 ` [PATCH 11/27] arm: " Christoph Hellwig
2026-03-11 7:03 ` [PATCH 12/27] arm64: " Christoph Hellwig
2026-03-11 7:03 ` [PATCH 13/27] loongarch: " Christoph Hellwig
2026-03-11 7:03 ` [PATCH 14/27] powerpc: " Christoph Hellwig
2026-03-11 7:03 ` [PATCH 15/27] riscv: " Christoph Hellwig
2026-03-11 7:03 ` [PATCH 16/27] sparc: " Christoph Hellwig
2026-03-11 7:03 ` [PATCH 17/27] s390: " Christoph Hellwig
2026-03-11 7:03 ` [PATCH 18/27] x86: " Christoph Hellwig
2026-03-11 7:03 ` [PATCH 19/27] xor: avoid indirect calls for arm64-optimized ops Christoph Hellwig
2026-03-11 7:03 ` [PATCH 20/27] xor: make xor.ko self-contained in lib/raid/ Christoph Hellwig
2026-03-11 7:03 ` [PATCH 21/27] xor: add a better public API Christoph Hellwig
2026-03-11 7:03 ` [PATCH 22/27] async_xor: use xor_gen Christoph Hellwig
2026-03-11 7:03 ` [PATCH 23/27] btrfs: " Christoph Hellwig
2026-03-12 6:14 ` David Sterba
2026-03-11 7:03 ` [PATCH 24/27] xor: pass the entire operation to the low-level ops Christoph Hellwig
2026-03-11 7:03 ` [PATCH 25/27] xor: use static_call for xor_gen Christoph Hellwig
2026-03-11 7:03 ` [PATCH 26/27] random: factor out a __limit_random_u32_below helper Christoph Hellwig
2026-03-11 22:29 ` Eric Biggers
2026-03-12 8:38 ` David Laight [this message]
2026-03-12 13:46 ` Jason A. Donenfeld
2026-03-11 7:03 ` [PATCH 27/27] xor: add a kunit test case Christoph Hellwig
2026-03-12 0:54 ` Eric Biggers
2026-03-11 18:57 ` cleanup the RAID5 XOR library v2 Andrew Morton
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=20260312083853.01dc18d3@pumpkin \
--to=david.laight.linux@gmail$(echo .)com \
--cc=Jason@zx2c4$(echo .)com \
--cc=agordeev@linux$(echo .)ibm.com \
--cc=akpm@linux-foundation$(echo .)org \
--cc=alex@ghiti$(echo .)fr \
--cc=andreas@gaisler$(echo .)com \
--cc=anton.ivanov@cambridgegreys$(echo .)com \
--cc=aou@eecs$(echo .)berkeley.edu \
--cc=arnd@arndb$(echo .)de \
--cc=borntraeger@linux$(echo .)ibm.com \
--cc=bp@alien8$(echo .)de \
--cc=catalin.marinas@arm$(echo .)com \
--cc=chenhuacai@kernel$(echo .)org \
--cc=chleroy@kernel$(echo .)org \
--cc=clm@fb$(echo .)com \
--cc=dan.j.williams@intel$(echo .)com \
--cc=dave.hansen@linux$(echo .)intel.com \
--cc=davem@davemloft$(echo .)net \
--cc=dsterba@suse$(echo .)com \
--cc=ebiggers@kernel$(echo .)org \
--cc=gor@linux$(echo .)ibm.com \
--cc=hca@linux$(echo .)ibm.com \
--cc=hch@lst$(echo .)de \
--cc=herbert@gondor$(echo .)apana.org.au \
--cc=hpa@zytor$(echo .)com \
--cc=johannes@sipsolutions$(echo .)net \
--cc=kernel@xen0n$(echo .)name \
--cc=linan122@huawei$(echo .)com \
--cc=linmag7@gmail$(echo .)com \
--cc=linux-alpha@vger$(echo .)kernel.org \
--cc=linux-arch@vger$(echo .)kernel.org \
--cc=linux-arm-kernel@lists$(echo .)infradead.org \
--cc=linux-btrfs@vger$(echo .)kernel.org \
--cc=linux-crypto@vger$(echo .)kernel.org \
--cc=linux-kernel@vger$(echo .)kernel.org \
--cc=linux-raid@vger$(echo .)kernel.org \
--cc=linux-riscv@lists$(echo .)infradead.org \
--cc=linux-s390@vger$(echo .)kernel.org \
--cc=linux-um@lists$(echo .)infradead.org \
--cc=linux@armlinux$(echo .)org.uk \
--cc=linuxppc-dev@lists$(echo .)ozlabs.org \
--cc=loongarch@lists$(echo .)linux.dev \
--cc=maddy@linux$(echo .)ibm.com \
--cc=mattst88@gmail$(echo .)com \
--cc=mingo@redhat$(echo .)com \
--cc=mpe@ellerman$(echo .)id.au \
--cc=npiggin@gmail$(echo .)com \
--cc=palmer@dabbelt$(echo .)com \
--cc=pjw@kernel$(echo .)org \
--cc=richard.henderson@linaro$(echo .)org \
--cc=richard@nod$(echo .)at \
--cc=song@kernel$(echo .)org \
--cc=sparclinux@vger$(echo .)kernel.org \
--cc=svens@linux$(echo .)ibm.com \
--cc=tglx@kernel$(echo .)org \
--cc=tytso@mit$(echo .)edu \
--cc=will@kernel$(echo .)org \
--cc=x86@kernel$(echo .)org \
--cc=yukuai@fnnas$(echo .)com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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