On Mon, Oct 9, 2023 at 7:30 PM Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> wrote: > > On Mon, Oct 09, 2023 at 06:57:40PM +0200, Max Kellermann wrote: > > This moves those variables to the ".rodata" section which reduces the > > kernel size a bit and protects the variables by putting them on > > read-only pages at runtime. > > The kernel size should still be the same overall, you are just moving > pointers from one section to another, right? > > If not, what are the numbers, show them please. Before this patch series: text data bss dec hex filename 10645342 6836166 12476420 29957928 1c91f28 vmlinux After: text data bss dec hex filename 10645342 6835398 12476420 29957160 1c91c28 vmlinux (Config attached if you wish to reproduce. I'm using stock GCC from Debian Bookworm.) It's only a few hundred bytes, and I havn't really dug deep enough to explain to you why this is - my goal was (semantic) const-correctness and .rodata protection, but those numbers are a side effect that exists. > But step back, are you SURE you can make these attribute group pointers > const? They are modified by some subsystems by adding or removing items > from the lists, so why does the core need to change for that? Some few do modify them, but they do not modify those pointers; they allocate a new one (the 3 I sbumitted a patch for) or they modify global variables (arch/pmu) which I'm not going to make "const". But most globals can indeed be made "const".
Attachment:
.config
Description: Binary data