Skip to content

arm64: mm: Fix "rodata=on" when CONFIG_RODATA_FULL_DEFAULT_ENABLED=y

Eric Chanudet requested to merge echanude/centos-stream-9:rhel-18400 into main

JIRA: https://issues.redhat.com/browse/RHEL-18400

commit acfa60dbe03802d6afd28401aa47801270e82021
Author: Will Deacon will@kernel.org
Date: Fri Nov 17 13:14:22 2023 +0000

arm64: mm: Fix "rodata=on" when CONFIG_RODATA_FULL_DEFAULT_ENABLED=y  

When CONFIG_RODATA_FULL_DEFAULT_ENABLED=y, passing "rodata=on" on the  
kernel command-line (rather than "rodata=full") should turn off the  
"full" behaviour, leaving writable linear aliases of read-only kernel  
memory. Unfortunately, the option has no effect in this situation and  
the only way to disable the "rodata=full" behaviour is to disable rodata  
protection entirely by passing "rodata=off".  

Fix this by parsing the "on" and "off" options in the arch code,  
additionally enforcing that 'rodata_full' cannot be set without also  
setting 'rodata_enabled', allowing us to simplify a couple of checks  
in the process.  

Fixes: 2e8cff0a0eee ("arm64: fix rodata=full")  
Cc: Ard Biesheuvel <ardb@kernel.org>  
Cc: Mark Rutland <mark.rutland@arm.com>  
Signed-off-by: Will Deacon <will@kernel.org>  
Reviewed-by: "Russell King (Oracle)" <rmk+kernel@armlinux.org.uk>  
Reviewed-by: Ard Biesheuvel <ardb@kernel.org>  
Link: https://lore.kernel.org/r/20231117131422.29663-1-will@kernel.org  
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>  

Signed-off-by: Eric Chanudet echanude@redhat.com

Merge request reports