arch: Rename CONFIG_DEBUG_RODATA and CONFIG_DEBUG_MODULE_RONX
authorLaura Abbott <labbott@redhat.com>
Tue, 7 Feb 2017 00:31:58 +0000 (16:31 -0800)
committerKees Cook <keescook@chromium.org>
Tue, 7 Feb 2017 20:32:52 +0000 (12:32 -0800)
Both of these options are poorly named. The features they provide are
necessary for system security and should not be considered debug only.
Change the names to CONFIG_STRICT_KERNEL_RWX and
CONFIG_STRICT_MODULE_RWX to better describe what these options do.

Signed-off-by: Laura Abbott <labbott@redhat.com>
Acked-by: Jessica Yu <jeyu@redhat.com>
Signed-off-by: Kees Cook <keescook@chromium.org>
24 files changed:
Documentation/DocBook/kgdb.tmpl
Documentation/security/self-protection.txt
arch/Kconfig
arch/arm/configs/aspeed_g4_defconfig
arch/arm/configs/aspeed_g5_defconfig
arch/arm/include/asm/cacheflush.h
arch/arm/kernel/patch.c
arch/arm/kernel/vmlinux.lds.S
arch/arm/mm/Kconfig
arch/arm/mm/init.c
arch/arm64/Kconfig.debug
arch/arm64/kernel/insn.c
arch/parisc/configs/712_defconfig
arch/parisc/configs/c3000_defconfig
arch/parisc/mm/init.c
include/linux/filter.h
include/linux/init.h
include/linux/module.h
init/main.c
kernel/configs/android-recommended.config
kernel/module.c
kernel/power/hibernate.c
kernel/power/power.h
kernel/power/snapshot.c

index f3abca7ec53d62e4bd416da9f53395aef9269855..856ac20bf36782f0aab56612abfd4cba2a69b861 100644 (file)
     </para>
     <para>
     If the architecture that you are using supports the kernel option
-    CONFIG_DEBUG_RODATA, you should consider turning it off.  This
+    CONFIG_STRICT_KERNEL_RWX, you should consider turning it off.  This
     option will prevent the use of software breakpoints because it
     marks certain regions of the kernel's memory space as read-only.
     If kgdb supports it for the architecture you are using, you can
     use hardware breakpoints if you desire to run with the
-    CONFIG_DEBUG_RODATA option turned on, else you need to turn off
+    CONFIG_STRICT_KERNEL_RWX option turned on, else you need to turn off
     this option.
     </para>
     <para>
     <para>Here is an example set of .config symbols to enable or
     disable for kgdb:
     <itemizedlist>
-    <listitem><para># CONFIG_DEBUG_RODATA is not set</para></listitem>
+    <listitem><para># CONFIG_STRICT_KERNEL_RWX is not set</para></listitem>
     <listitem><para>CONFIG_FRAME_POINTER=y</para></listitem>
     <listitem><para>CONFIG_KGDB=y</para></listitem>
     <listitem><para>CONFIG_KGDB_SERIAL_CONSOLE=y</para></listitem>
     </para>
     <para>Here is an example set of .config symbols to enable/disable kdb:
     <itemizedlist>
-    <listitem><para># CONFIG_DEBUG_RODATA is not set</para></listitem>
+    <listitem><para># CONFIG_STRICT_KERNEL_RWX is not set</para></listitem>
     <listitem><para>CONFIG_FRAME_POINTER=y</para></listitem>
     <listitem><para>CONFIG_KGDB=y</para></listitem>
     <listitem><para>CONFIG_KGDB_SERIAL_CONSOLE=y</para></listitem>
index f41dd00e8b98abb3db3e3f143f51c4f7730b8cd7..141acfebe6ef16109c23d16613564f01e0730a21 100644 (file)
@@ -51,8 +51,8 @@ kernel, they are implemented in a way where the memory is temporarily
 made writable during the update, and then returned to the original
 permissions.)
 
-In support of this are (the poorly named) CONFIG_DEBUG_RODATA and
-CONFIG_DEBUG_SET_MODULE_RONX, which seek to make sure that code is not
+In support of this are CONFIG_STRICT_KERNEL_RWX and
+CONFIG_STRICT_MODULE_RWX, which seek to make sure that code is not
 writable, data is not executable, and read-only data is neither writable
 nor executable.
 
index 3f8b8be3036ffd59c963c4598b1b197b1eb9c6fd..33f5a555c32a5820f614341bb758a88447dbd2cb 100644 (file)
@@ -790,7 +790,7 @@ config ARCH_OPTIONAL_KERNEL_RWX_DEFAULT
 config ARCH_HAS_STRICT_KERNEL_RWX
        def_bool n
 
-config DEBUG_RODATA
+config STRICT_KERNEL_RWX
        bool "Make kernel text and rodata read-only" if ARCH_OPTIONAL_KERNEL_RWX
        depends on ARCH_HAS_STRICT_KERNEL_RWX
        default !ARCH_OPTIONAL_KERNEL_RWX || ARCH_OPTIONAL_KERNEL_RWX_DEFAULT
@@ -806,7 +806,7 @@ config DEBUG_RODATA
 config ARCH_HAS_STRICT_MODULE_RWX
        def_bool n
 
-config DEBUG_SET_MODULE_RONX
+config STRICT_MODULE_RWX
        bool "Set loadable kernel module data as NX and text as RO" if ARCH_OPTIONAL_KERNEL_RWX
        depends on ARCH_HAS_STRICT_MODULE_RWX && MODULES
        default !ARCH_OPTIONAL_KERNEL_RWX || ARCH_OPTIONAL_KERNEL_RWX_DEFAULT
index ca39c04fec6b7af28847b78b6b3ff36a75811b31..05b99bc1c1ce03e2adbb3cd9a2fbccb6b2ff3164 100644 (file)
@@ -25,7 +25,6 @@ CONFIG_MODULE_UNLOAD=y
 # CONFIG_ARCH_MULTI_V7 is not set
 CONFIG_ARCH_ASPEED=y
 CONFIG_MACH_ASPEED_G4=y
-CONFIG_DEBUG_RODATA=y
 CONFIG_AEABI=y
 CONFIG_UACCESS_WITH_MEMCPY=y
 CONFIG_SECCOMP=y
@@ -79,7 +78,8 @@ CONFIG_DEBUG_LL_UART_8250=y
 CONFIG_DEBUG_UART_PHYS=0x1e784000
 CONFIG_DEBUG_UART_VIRT=0xe8784000
 CONFIG_EARLY_PRINTK=y
-CONFIG_DEBUG_SET_MODULE_RONX=y
+CONFIG_STRICT_MODULE_RWX=y
+CONFIG_STRICT_KERNEL_RWX=y
 # CONFIG_XZ_DEC_X86 is not set
 # CONFIG_XZ_DEC_POWERPC is not set
 # CONFIG_XZ_DEC_IA64 is not set
index 4f366b0370e939a27056f0230b49140ddee85503..05a16d53d03c40570293a7dce2099c05ba706dcc 100644 (file)
@@ -26,7 +26,6 @@ CONFIG_ARCH_MULTI_V6=y
 # CONFIG_ARCH_MULTI_V7 is not set
 CONFIG_ARCH_ASPEED=y
 CONFIG_MACH_ASPEED_G5=y
-CONFIG_DEBUG_RODATA=y
 CONFIG_AEABI=y
 CONFIG_UACCESS_WITH_MEMCPY=y
 CONFIG_SECCOMP=y
@@ -81,7 +80,8 @@ CONFIG_DEBUG_LL_UART_8250=y
 CONFIG_DEBUG_UART_PHYS=0x1e784000
 CONFIG_DEBUG_UART_VIRT=0xe8784000
 CONFIG_EARLY_PRINTK=y
-CONFIG_DEBUG_SET_MODULE_RONX=y
+CONFIG_STRICT_MODULE_RWX=y
+CONFIG_STRICT_KERNEL_RWX=y
 # CONFIG_XZ_DEC_X86 is not set
 # CONFIG_XZ_DEC_POWERPC is not set
 # CONFIG_XZ_DEC_IA64 is not set
index bdd283bc5842c31fd9f399e8353adcaf1eadfe39..02454fa15d2c42a979b06f387e41d2b5d35ecee7 100644 (file)
@@ -490,7 +490,7 @@ static inline int set_memory_x(unsigned long addr, int numpages) { return 0; }
 static inline int set_memory_nx(unsigned long addr, int numpages) { return 0; }
 #endif
 
-#ifdef CONFIG_DEBUG_RODATA
+#ifdef CONFIG_STRICT_KERNEL_RWX
 void set_kernel_text_rw(void);
 void set_kernel_text_ro(void);
 #else
index 69bda1a5707ee826ededa348a90a55c394ad8613..020560b2dcb78a9c6b4591148c2df5669fab0f4d 100644 (file)
@@ -24,9 +24,9 @@ static void __kprobes *patch_map(void *addr, int fixmap, unsigned long *flags)
        bool module = !core_kernel_text(uintaddr);
        struct page *page;
 
-       if (module && IS_ENABLED(CONFIG_DEBUG_SET_MODULE_RONX))
+       if (module && IS_ENABLED(CONFIG_STRICT_MODULE_RWX))
                page = vmalloc_to_page(addr);
-       else if (!module && IS_ENABLED(CONFIG_DEBUG_RODATA))
+       else if (!module && IS_ENABLED(CONFIG_STRICT_KERNEL_RWX))
                page = virt_to_page(addr);
        else
                return addr;
index f7f55df0bf7b3b654f40c3c847646f5ec482a0d9..ce18007f9e4eb08d1b36ad7103f15e7adadaae9e 100644 (file)
@@ -97,7 +97,7 @@ SECTIONS
                HEAD_TEXT
        }
 
-#ifdef CONFIG_DEBUG_RODATA
+#ifdef CONFIG_STRICT_KERNEL_RWX
        . = ALIGN(1<<SECTION_SHIFT);
 #endif
 
@@ -158,7 +158,7 @@ SECTIONS
 
        NOTES
 
-#ifdef CONFIG_DEBUG_RODATA
+#ifdef CONFIG_STRICT_KERNEL_RWX
        . = ALIGN(1<<SECTION_SHIFT);
 #else
        . = ALIGN(PAGE_SIZE);
@@ -230,7 +230,7 @@ SECTIONS
        PERCPU_SECTION(L1_CACHE_BYTES)
 #endif
 
-#ifdef CONFIG_DEBUG_RODATA
+#ifdef CONFIG_STRICT_KERNEL_RWX
        . = ALIGN(1<<SECTION_SHIFT);
 #else
        . = ALIGN(THREAD_SIZE);
@@ -325,7 +325,7 @@ SECTIONS
        STABS_DEBUG
 }
 
-#ifdef CONFIG_DEBUG_RODATA
+#ifdef CONFIG_STRICT_KERNEL_RWX
 /*
  * Without CONFIG_DEBUG_ALIGN_RODATA, __start_rodata_section_aligned will
  * be the first section-aligned location after __start_rodata. Otherwise,
index 419a0355d4e4d48f2cbc9ab0fde1344be7c70b64..35e3a56e5d865bc38fed7a86ce91563c08e3dfa7 100644 (file)
@@ -1053,7 +1053,7 @@ config ARCH_SUPPORTS_BIG_ENDIAN
 
 config DEBUG_ALIGN_RODATA
        bool "Make rodata strictly non-executable"
-       depends on DEBUG_RODATA
+       depends on STRICT_KERNEL_RWX
        default y
        help
          If this is set, rodata will be made explicitly non-executable. This
index 370581aeb87104273df695409af37876956c639f..4be0bee4c35700aacbaaa3994d5ae4a7ce92bfb5 100644 (file)
@@ -572,7 +572,7 @@ void __init mem_init(void)
        }
 }
 
-#ifdef CONFIG_DEBUG_RODATA
+#ifdef CONFIG_STRICT_KERNEL_RWX
 struct section_perm {
        const char *name;
        unsigned long start;
@@ -741,7 +741,7 @@ void set_kernel_text_ro(void)
 
 #else
 static inline void fix_kernmem_perms(void) { }
-#endif /* CONFIG_DEBUG_RODATA */
+#endif /* CONFIG_STRICT_KERNEL_RWX */
 
 void free_tcmmem(void)
 {
index 939815e8d695444d24ddcd13c1d9c5d5fc204c08..560a8d85a4f8a2ccb7abe32f40b4030ae5a89a02 100644 (file)
@@ -72,7 +72,7 @@ config DEBUG_WX
          If in doubt, say "Y".
 
 config DEBUG_ALIGN_RODATA
-       depends on DEBUG_RODATA
+       depends on STRICT_KERNEL_RWX
        bool "Align linker sections up to SECTION_SIZE"
        help
          If this option is enabled, sections that may potentially be marked as
index 94b62c1fa4df0e95f6554da420ef7ef3112c7b04..67f9cb9e8512824dbe358a54f6d15dd48c6f33c7 100644 (file)
@@ -93,7 +93,7 @@ static void __kprobes *patch_map(void *addr, int fixmap)
        bool module = !core_kernel_text(uintaddr);
        struct page *page;
 
-       if (module && IS_ENABLED(CONFIG_DEBUG_SET_MODULE_RONX))
+       if (module && IS_ENABLED(CONFIG_STRICT_MODULE_RWX))
                page = vmalloc_to_page(addr);
        else if (!module)
                page = pfn_to_page(PHYS_PFN(__pa(addr)));
index db8f56bf388392d71f99046ac6ccb1862b0e412d..143d0265279204ef9e51288640ba091eb2453c27 100644 (file)
@@ -182,7 +182,6 @@ CONFIG_DEBUG_FS=y
 CONFIG_DEBUG_KERNEL=y
 CONFIG_DEBUG_MUTEXES=y
 # CONFIG_RCU_CPU_STALL_DETECTOR is not set
-CONFIG_DEBUG_RODATA=y
 CONFIG_CRYPTO_NULL=m
 CONFIG_CRYPTO_TEST=m
 CONFIG_CRYPTO_HMAC=y
index fb92b8920785c3e943392576ac0ba91902c9346a..8e8f0e34f8174c5905ca8b3b3b65c829c3557265 100644 (file)
@@ -166,7 +166,6 @@ CONFIG_DEBUG_KERNEL=y
 CONFIG_DEBUG_MUTEXES=y
 # CONFIG_DEBUG_BUGVERBOSE is not set
 # CONFIG_RCU_CPU_STALL_DETECTOR is not set
-CONFIG_DEBUG_RODATA=y
 CONFIG_CRYPTO_NULL=m
 CONFIG_CRYPTO_TEST=m
 CONFIG_CRYPTO_MD5=m
index e02ada312be8239d687f491b7b75824a82b1204e..a055e5b6b3807770288a65e60c169e82abf743cc 100644 (file)
@@ -545,7 +545,7 @@ void free_initmem(void)
 }
 
 
-#ifdef CONFIG_DEBUG_RODATA
+#ifdef CONFIG_STRICT_KERNEL_RWX
 void mark_rodata_ro(void)
 {
        /* rodata memory was already mapped with KERNEL_RO access rights by
index a0934e6c9babf8436a18b28f4dea285894e5dca5..c6dd53e8871119336c99ca2987777b77957ec88e 100644 (file)
@@ -543,7 +543,7 @@ static inline bool bpf_prog_was_classic(const struct bpf_prog *prog)
 
 #define bpf_classic_proglen(fprog) (fprog->len * sizeof(fprog->filter[0]))
 
-#ifdef CONFIG_DEBUG_SET_MODULE_RONX
+#ifdef CONFIG_STRICT_MODULE_RWX
 static inline void bpf_prog_lock_ro(struct bpf_prog *fp)
 {
        set_memory_ro((unsigned long)fp, fp->pages);
@@ -561,7 +561,7 @@ static inline void bpf_prog_lock_ro(struct bpf_prog *fp)
 static inline void bpf_prog_unlock_ro(struct bpf_prog *fp)
 {
 }
-#endif /* CONFIG_DEBUG_SET_MODULE_RONX */
+#endif /* CONFIG_STRICT_MODULE_RWX */
 
 int sk_filter_trim_cap(struct sock *sk, struct sk_buff *skb, unsigned int cap);
 static inline int sk_filter(struct sock *sk, struct sk_buff *skb)
index 885c3e6d0f9d763669a63d41bc90d5764f264681..79af0962fd525980064241c653d748f2f9be63c0 100644 (file)
@@ -126,10 +126,10 @@ void prepare_namespace(void);
 void __init load_default_modules(void);
 int __init init_rootfs(void);
 
-#if defined(CONFIG_DEBUG_RODATA) || defined(CONFIG_DEBUG_SET_MODULE_RONX)
+#if defined(CONFIG_STRICT_KERNEL_RWX) || defined(CONFIG_STRICT_MODULE_RWX)
 extern bool rodata_enabled;
 #endif
-#ifdef CONFIG_DEBUG_RODATA
+#ifdef CONFIG_STRICT_KERNEL_RWX
 void mark_rodata_ro(void);
 #endif
 
index 7c84273d60b963d44c032761cac62194e82d1198..d5afd142818f5da0d6f3c50b4fecbffefe0f2f74 100644 (file)
@@ -764,7 +764,7 @@ extern int module_sysfs_initialized;
 
 #define __MODULE_STRING(x) __stringify(x)
 
-#ifdef CONFIG_DEBUG_SET_MODULE_RONX
+#ifdef CONFIG_STRICT_MODULE_RWX
 extern void set_all_modules_text_rw(void);
 extern void set_all_modules_text_ro(void);
 extern void module_enable_ro(const struct module *mod, bool after_init);
index b0c9d6facef9a5aced55d1443b40029a660011e8..0b7bae29eef67c43100f294caac22b5de1818e89 100644 (file)
@@ -925,7 +925,7 @@ static int try_to_run_init_process(const char *init_filename)
 
 static noinline void __init kernel_init_freeable(void);
 
-#if defined(CONFIG_DEBUG_RODATA) || defined(CONFIG_DEBUG_SET_MODULE_RONX)
+#if defined(CONFIG_STRICT_KERNEL_RWX) || defined(CONFIG_STRICT_MODULE_RWX)
 bool rodata_enabled __ro_after_init = true;
 static int __init set_debug_rodata(char *str)
 {
@@ -934,7 +934,7 @@ static int __init set_debug_rodata(char *str)
 __setup("rodata=", set_debug_rodata);
 #endif
 
-#ifdef CONFIG_DEBUG_RODATA
+#ifdef CONFIG_STRICT_KERNEL_RWX
 static void mark_readonly(void)
 {
        if (rodata_enabled)
index 297756be369c68d9e56c3c5823de5530118671f6..99127edc52043ce74c84536613ed0c3e3044ed7f 100644 (file)
@@ -11,7 +11,7 @@ CONFIG_BLK_DEV_LOOP=y
 CONFIG_BLK_DEV_RAM=y
 CONFIG_BLK_DEV_RAM_SIZE=8192
 CONFIG_COMPACTION=y
-CONFIG_DEBUG_RODATA=y
+CONFIG_STRICT_KERNEL_RWX=y
 CONFIG_DM_CRYPT=y
 CONFIG_DM_UEVENT=y
 CONFIG_DM_VERITY=y
index 5088784c0cf9e97c166b7dc06afed9d1c7709d2e..e71478569273c316ee133f4524d2355675589f87 100644 (file)
@@ -74,9 +74,9 @@
 /*
  * Modules' sections will be aligned on page boundaries
  * to ensure complete separation of code and data, but
- * only when CONFIG_DEBUG_SET_MODULE_RONX=y
+ * only when CONFIG_STRICT_MODULE_RWX=y
  */
-#ifdef CONFIG_DEBUG_SET_MODULE_RONX
+#ifdef CONFIG_STRICT_MODULE_RWX
 # define debug_align(X) ALIGN(X, PAGE_SIZE)
 #else
 # define debug_align(X) (X)
@@ -1847,7 +1847,7 @@ static void mod_sysfs_teardown(struct module *mod)
        mod_sysfs_fini(mod);
 }
 
-#ifdef CONFIG_DEBUG_SET_MODULE_RONX
+#ifdef CONFIG_STRICT_MODULE_RWX
 /*
  * LKM RO/NX protection: protect module's text/ro-data
  * from modification and any data from execution.
index b26dbc48c75b9fa9045fafeccde8b23e69b9ab2e..86385af1080f09e325cc53f9a1d300d364f660dd 100644 (file)
@@ -1156,7 +1156,7 @@ static int __init hibernate_setup(char *str)
        } else if (!strncmp(str, "no", 2)) {
                noresume = 1;
                nohibernate = 1;
-       } else if (IS_ENABLED(CONFIG_DEBUG_RODATA)
+       } else if (IS_ENABLED(CONFIG_STRICT_KERNEL_RWX)
                   && !strncmp(str, "protect_image", 13)) {
                enable_restore_image_protection();
        }
index 1dfa0da827d3c4e77cc6a2e49c25d170c8ce3fb8..7fdc40d31b7db455fadbc20569a6b49faa8f01f6 100644 (file)
@@ -61,12 +61,12 @@ extern int hibernation_snapshot(int platform_mode);
 extern int hibernation_restore(int platform_mode);
 extern int hibernation_platform_enter(void);
 
-#ifdef CONFIG_DEBUG_RODATA
+#ifdef CONFIG_STRICT_KERNEL_RWX
 /* kernel/power/snapshot.c */
 extern void enable_restore_image_protection(void);
 #else
 static inline void enable_restore_image_protection(void) {}
-#endif /* CONFIG_DEBUG_RODATA */
+#endif /* CONFIG_STRICT_KERNEL_RWX */
 
 #else /* !CONFIG_HIBERNATION */
 
index 2d8e2b227db84598f1523fa8fdadca5ccd7e9f44..905d5bbd595fa3dae632e0eda882ad9e15de69ba 100644 (file)
@@ -38,7 +38,7 @@
 
 #include "power.h"
 
-#ifdef CONFIG_DEBUG_RODATA
+#ifdef CONFIG_STRICT_KERNEL_RWX
 static bool hibernate_restore_protection;
 static bool hibernate_restore_protection_active;
 
@@ -73,7 +73,7 @@ static inline void hibernate_restore_protection_begin(void) {}
 static inline void hibernate_restore_protection_end(void) {}
 static inline void hibernate_restore_protect_page(void *page_address) {}
 static inline void hibernate_restore_unprotect_page(void *page_address) {}
-#endif /* CONFIG_DEBUG_RODATA */
+#endif /* CONFIG_STRICT_KERNEL_RWX */
 
 static int swsusp_page_is_free(struct page *);
 static void swsusp_set_page_forbidden(struct page *);