Re: [PATCH v2] random: vDSO: Avoid call to memset() when zeroing reserved in __cvdso_getrandom_data()

From: Jason A. Donenfeld

Date: Fri Oct 02 2026 - 05:41:05 EST


On Fri, Oct 02, 2026 at 11:18:51AM +0200, Christophe Leroy (CS GROUP) wrote:
>
>
> Le 01/10/2026 à 12:48, Jason A. Donenfeld a écrit :
> > On Thu, Oct 01, 2026 at 12:20:59PM +0200, Nathan Chancellor wrote:
> >> control. The change that introduced -max-store-memset only did it to
> >> "allow fine-tuning of the inlining threshold for performance analysis
> >> and optimization". If they decide to remove it for whatever reason,
> >> we're back to square one.
> >
> > I suppose all the more reason to get -finline-stringops=memset added to
> > clang. Then the dual-default thing you came up with below will naturally
> > start choosing the first option when it becomes available.
> >
> >> I know something like below would be uglier due to the ifdef but it
> >> would avoid changing anything for GCC while clearing up the issue at
> >> hand for clang in a guaranteed stable and succinct manner.
> >
> > But then we're back to the byte-by-byte codegen that Christophe pointed
> > out.
> >
> >> If that is not acceptable, something like the following does appear to
> >> work for me.
> >
> > Okay, great, let's do that.
> >
> > Does this commit seem okay with you? I used the diff you sent below and
> > adjusted the commit message: https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit.zx2c4.com%2Flinux-rng%2Fcommit%2F%3Fid%3D56ff95ee85715047eb5b5220243778af657778c8&data=05%7C02%7Cchristophe.leroy%40csgroup.eu%7Cd89b4de22ff94b6be71208df1fa9839a%7C8b87af7d86474dc78df45f69a2011bb5%7C0%7C0%7C639264485055490029%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=Vxf8xRCdLavtw4Dmi%2B49FY1lJDWtm%2BjKv7f8BxKTGq4%3D&reserved=0
> >
>
> The commit message says: Similarly, GCC has -finline-stringops=memset to
> do the same [4], should this issue ever hit future version of GCC.
>
> Why default "-finline-stringops=memset" if
> $(cc-option,-finline-stringops=memset), have we identified cases where
> build fail without that or is it just for future provision ?
>
> As shown in my previous email, with GCC 16 on powerpc32 we get a
> slightly better code without this option.

No, that patch tested this option + actually calling builtin_memset.
This new patch has the original code of zeroing a long at a time, but
has the inline memset option to prevent future GCC from recognizing that
pattern and making it outline. Codegen should be the same.

Jason