Line data Source code
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 __end_rodata_aligned[]; 12 : 13 : #if defined(CONFIG_X86_64) 14 : extern char __end_rodata_hpage_align[]; 15 : #endif 16 : 17 : extern char __end_of_kernel_reserve[]; 18 : 19 : extern unsigned long _brk_start, _brk_end; 20 : 21 1360757 : static inline bool arch_is_kernel_initmem_freed(unsigned long addr) 22 : { 23 : /* 24 : * If _brk_start has not been cleared, brk allocation is incomplete, 25 : * and we can not make assumptions about its use. 26 : */ 27 1360757 : if (_brk_start) 28 : return 0; 29 : 30 : /* 31 : * After brk allocation is complete, space between _brk_end and _end 32 : * is available for allocation. 33 : */ 34 2688704 : return addr >= _brk_end && addr < (unsigned long)&_end; 35 : } 36 : 37 : #endif /* _ASM_X86_SECTIONS_H */