Re: [PATCH v7 1/2] arm64: refactor the rodata=xxx

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 09/09/2025 12:29, Anshuman Khandual wrote:
On 09/09/25 9:02 AM, Huang Shijie wrote:
As per admin guide documentation, "rodata=on" should be the default on
platforms. Documentation/admin-guide/kernel-parameters.txt describes
these options as

    rodata=         [KNL,EARLY]
            on      Mark read-only kernel memory as read-only (default).
            off     Leave read-only kernel memory writable for debugging.
            full    Mark read-only kernel memory and aliases as read-only
                    [arm64]

But on arm64 platform, RODATA_FULL_DEFAULT_ENABLED is enabled by default,
so "rodata=full" is the default instead.

This patch implements the following changes:
  - Make "rodata=on" behaviour same as the original "rodata=full".
    This keeps align with the x86.
  - Make "rodata=noalias" (new) behaviour same as the original "rodata=on"
  - Drop the original "rodata=full"

After this patch, the "rodata=on" will be the default on arm64 platform
as well.

Different rodata options may have different performance, so record more
detail information here:

  rodata=on (default)
     This applies read-only attributes to VM areas and to the linear
     alias of the backing pages as well. This prevents code or read-
     only data from being modified (inadvertently or intentionally),
     via another mapping for the same memory page.

     But this might cause linear map region to be mapped down to base
     pages, which may adversely affect performance in some cases.

  rodata=off
     This provides more block mappings and contiguous hints for linear
     map region which would minimize TLB footprint. This also leaves
     read-only kernel memory writable for debugging.

  rodata=noalias
     This provides more block mappings and contiguous hints for linear
     map region which would minimize TLB footprint. This leaves the linear
     alias of read-only mappings in the vmalloc space writeable, making
						typo     ^^^^^^^^
What's the typo? It seems "writeable" is okay.
     them susceptible to inadvertent modification by software.

Signed-off-by: Huang Shijie <shijie@xxxxxxxxxxxxxxxxxxxxxx>
---
  Documentation/admin-guide/kernel-parameters.txt | 5 +++--
  arch/arm64/include/asm/setup.h                  | 4 ++--
  2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
index db84a629f7b1..138e0db5af64 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -6418,8 +6418,9 @@
  	rodata=		[KNL,EARLY]
  		on	Mark read-only kernel memory as read-only (default).
  		off	Leave read-only kernel memory writable for debugging.
-		full	Mark read-only kernel memory and aliases as read-only
-		        [arm64]
+		noalias	Mark read-only kernel memory as read-only but retain
+			writable aliases in the direct map for regions outside
+			of the kernel image. [arm64]
Should not the arm64 specific performance implications be mentioned
in the above documentation update as well ? But in case this appears
too much platform specific - probably do consider adding them above
or inside arch_parse_debug_rodata() as an in-code documentation.

Will had already suggested do not add them for the arch_parse_debug_rodata():

https://lists.infradead.org/pipermail/linux-arm-kernel/2025-September/1060135.html



Thanks

Huang Shijie





[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux