Re: [PATCH v2 1/2] asm-generic/vmlinux.lds: Move .data.rel.ro input into .rodata segment
From: Josh Poimboeuf
Date: Thu Feb 20 2025 - 15:55:47 EST
On Wed, Feb 19, 2025 at 11:55:44AM +0100, Ard Biesheuvel wrote:
> From: Ard Biesheuvel <ardb@xxxxxxxxxx>
BTW, I was copied on the cover letter but not the individual patches.
> When using -fPIE codegen, the compiler will emit const global objects
> (which are useless unless statically initialized) into .data.rel.ro
> rather than .rodata if the object contains fields that carry absolute
> addresses of other code or data objects. This permits the linker to
> annotate such regions as requiring read-write access only at load time,
> but not at execution time (in user space).
Hm, this sounds more like __ro_after_init, are we sure the kernel
doesn't need to write it early?
> This distinction does not matter for the kernel, but it does imply that
> const data will end up in writable memory if the .data.rel.ro sections
> are not treated in a special way.
>
> So emit .data.rel.ro into the .rodata segment.
This is a bug fix, right? Since the RO data wasn't actually RO? That's
not clear in the title.
--
Josh