Thread (37 messages) 37 messages, 7 authors, 20d ago

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

flat view

From: "Jason A. Donenfeld" <Jason@zx2c4.com>
Date: 2026-10-02 09:28:15
Also in: linux-arm-kernel, linux-riscv, linux-s390, lkml, llvm, loongarch

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 :
quoted
On Thu, Oct 01, 2026 at 12:20:59PM +0200, Nathan Chancellor wrote:
quoted
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.
quoted
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.
  
quoted
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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help