1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef _ASM_X86_SECTIONS_H 3 #define _ASM_X86_SECTIONS_H 4 5 #define arch_is_kernel_initmem_freed arch_is_kernel_initmem_freed 6 7 #include <asm-generic/sections.h> 8 #include <asm/extable.h> 9 10 extern char __brk_base[], __brk_limit[]; 11 extern char __cfi_jt_start[], __cfi_jt_end[]; 12 extern char __end_rodata_aligned[]; 13 14 #if defined(CONFIG_X86_64) 15 extern char __end_rodata_hpage_align[]; 16 #endif 17 18 extern char __end_of_kernel_reserve[]; 19 20 extern unsigned long _brk_start, _brk_end; 21 arch_is_kernel_initmem_freed(unsigned long addr)22static inline bool arch_is_kernel_initmem_freed(unsigned long addr) 23 { 24 /* 25 * If _brk_start has not been cleared, brk allocation is incomplete, 26 * and we can not make assumptions about its use. 27 */ 28 if (_brk_start) 29 return 0; 30 31 /* 32 * After brk allocation is complete, space between _brk_end and _end 33 * is available for allocation. 34 */ 35 return addr >= _brk_end && addr < (unsigned long)&_end; 36 } 37 38 #endif /* _ASM_X86_SECTIONS_H */ 39