return __mmu_mapin_ram(border, top);
 }
 
+static bool is_module_segment(unsigned long addr)
+{
+       if (!IS_ENABLED(CONFIG_MODULES))
+               return false;
+       if (addr < ALIGN_DOWN(VMALLOC_START, SZ_256M))
+               return false;
+       if (addr >= ALIGN(VMALLOC_END, SZ_256M))
+               return false;
+       return true;
+}
+
 void mmu_mark_initmem_nx(void)
 {
        int nb = mmu_has_feature(MMU_FTR_USE_HIGH_BATS) ? 8 : 4;
 
        for (i = TASK_SIZE >> 28; i < 16; i++) {
                /* Do not set NX on VM space for modules */
-               if (IS_ENABLED(CONFIG_MODULES) &&
-                   (VMALLOC_START & 0xf0000000) == i << 28)
-                       break;
+               if (is_module_segment(i << 28))
+                       continue;
+
                mtsrin(mfsrin(i << 28) | 0x10000000, i << 28);
        }
 }