Merge tag 'sched_urgent_for_v5.14' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6-microblaze.git] / arch / arm64 / mm / pageattr.c
index 92eccaf..a3bacd7 100644 (file)
@@ -19,6 +19,11 @@ struct page_change_data {
 
 bool rodata_full __ro_after_init = IS_ENABLED(CONFIG_RODATA_FULL_DEFAULT_ENABLED);
 
+bool can_set_direct_map(void)
+{
+       return rodata_full || debug_pagealloc_enabled();
+}
+
 static int change_page_range(pte_t *ptep, unsigned long addr, void *data)
 {
        struct page_change_data *cdata = data;
@@ -155,7 +160,7 @@ int set_direct_map_invalid_noflush(struct page *page)
                .clear_mask = __pgprot(PTE_VALID),
        };
 
-       if (!debug_pagealloc_enabled() && !rodata_full)
+       if (!can_set_direct_map())
                return 0;
 
        return apply_to_page_range(&init_mm,
@@ -170,7 +175,7 @@ int set_direct_map_default_noflush(struct page *page)
                .clear_mask = __pgprot(PTE_RDONLY),
        };
 
-       if (!debug_pagealloc_enabled() && !rodata_full)
+       if (!can_set_direct_map())
                return 0;
 
        return apply_to_page_range(&init_mm,
@@ -181,7 +186,7 @@ int set_direct_map_default_noflush(struct page *page)
 #ifdef CONFIG_DEBUG_PAGEALLOC
 void __kernel_map_pages(struct page *page, int numpages, int enable)
 {
-       if (!debug_pagealloc_enabled() && !rodata_full)
+       if (!can_set_direct_map())
                return;
 
        set_memory_valid((unsigned long)page_address(page), numpages, enable);
@@ -206,7 +211,7 @@ bool kernel_page_present(struct page *page)
        pte_t *ptep;
        unsigned long addr = (unsigned long)page_address(page);
 
-       if (!debug_pagealloc_enabled() && !rodata_full)
+       if (!can_set_direct_map())
                return true;
 
        pgdp = pgd_offset_k(addr);