lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <8138c729-8a30-454d-8422-234cead415ab@ghiti.fr>
Date: Mon, 14 Oct 2024 13:12:52 +0200
From: Alexandre Ghiti <alex@...ti.fr>
To: Palmer Dabbelt <palmer@...belt.com>, alexghiti@...osinc.com
Cc: vladimir.isaev@...tacore.com, roman.artemev@...tacore.com,
 guoren@...nel.org, Paul Walmsley <paul.walmsley@...ive.com>,
 aou@...s.berkeley.edu, linux-riscv@...ts.infradead.org,
 linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2 1/2] riscv: vdso: Prevent gcc from inserting calls to
 memset()

Hi Palmer,

On 17/09/2024 17:41, Palmer Dabbelt wrote:
> On Thu, 04 Jul 2024 23:09:01 PDT (-0700), alexghiti@...osinc.com wrote:
>> gcc is smart enough to insert a call to memset() in
>> riscv_vdso_get_cpus(), which generates a dynamic relocation.
>>
>> So prevent gcc from doing that by using the
>> -fno-tree-loop-distribute-patterns option.
>
> This option doesn't exist on LLVM (at least on whatever version I'm 
> using), and I'm not getting any memset()s generated locally so I'm not 
> sure what to look for over there.
>

When compiling a rv32_defconfig (still on 6.12), I get:

~/linux$ riscv64-unknown-elf-readelf -r 
build_defconfig_rv32/arch/riscv/kernel/vdso/vdso.so

Relocation section '.rela.dyn' at offset 0x5a0 contains 1 entry:
  Offset     Info    Type            Sym.Value  Sym. Name + Addend
00000314  00000205 R_RISCV_JUMP_SLOT 00000000   memset + 0


> From poking around GCC it looks like we might want -fno-tree-ccp too? 
> That seems to be able to convert assignments into builtins as well...


I gave a try at -fno-tree-ccp, but it did not remove this relocation.

I now see this relocation in llvm too, so it would be nice to find a 
common option or another way to do it, any idea is welcome!

Thanks,

Alex


>
>> Signed-off-by: Alexandre Ghiti <alexghiti@...osinc.com>
>> ---
>>  arch/riscv/kernel/vdso/Makefile | 1 +
>>  1 file changed, 1 insertion(+)
>>
>> diff --git a/arch/riscv/kernel/vdso/Makefile 
>> b/arch/riscv/kernel/vdso/Makefile
>> index f7ef8ad9b550..c7e40bf36371 100644
>> --- a/arch/riscv/kernel/vdso/Makefile
>> +++ b/arch/riscv/kernel/vdso/Makefile
>> @@ -18,6 +18,7 @@ obj-vdso = $(patsubst %, %.o, $(vdso-syms)) note.o
>>
>>  ccflags-y := -fno-stack-protector
>>  ccflags-y += -DDISABLE_BRANCH_PROFILING
>> +ccflags-y += -fno-tree-loop-distribute-patterns
>>
>>  ifneq ($(c-gettimeofday-y),)
>>    CFLAGS_vgettimeofday.o += -fPIC -include $(c-gettimeofday-y)
>
> _______________________________________________
> linux-riscv mailing list
> linux-riscv@...ts.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-riscv

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ