mirror of
				https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
				synced 2025-10-31 14:30:50 +00:00 
			
		
		
		
	 6a11f75b6a
			
		
	
	
		6a11f75b6a
		
	
	
	
	
		
			
			CONFIG_DEBUG_PAGEALLOC is now supported by x86, powerpc, sparc64, and s390. This patch implements it for the rest of the architectures by filling the pages with poison byte patterns after free_pages() and verifying the poison patterns before alloc_pages(). This generic one cannot detect invalid page accesses immediately but invalid read access may cause invalid dereference by poisoned memory and invalid write access can be detected after a long delay. Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com> Cc: <linux-arch@vger.kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
		
			
				
	
	
		
			31 lines
		
	
	
		
			906 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			906 B
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef LINUX_PAGE_DEBUG_FLAGS_H
 | |
| #define  LINUX_PAGE_DEBUG_FLAGS_H
 | |
| 
 | |
| /*
 | |
|  * page->debug_flags bits:
 | |
|  *
 | |
|  * PAGE_DEBUG_FLAG_POISON is set for poisoned pages. This is used to
 | |
|  * implement generic debug pagealloc feature. The pages are filled with
 | |
|  * poison patterns and set this flag after free_pages(). The poisoned
 | |
|  * pages are verified whether the patterns are not corrupted and clear
 | |
|  * the flag before alloc_pages().
 | |
|  */
 | |
| 
 | |
| enum page_debug_flags {
 | |
| 	PAGE_DEBUG_FLAG_POISON,		/* Page is poisoned */
 | |
| };
 | |
| 
 | |
| /*
 | |
|  * Ensure that CONFIG_WANT_PAGE_DEBUG_FLAGS reliably
 | |
|  * gets turned off when no debug features are enabling it!
 | |
|  */
 | |
| 
 | |
| #ifdef CONFIG_WANT_PAGE_DEBUG_FLAGS
 | |
| #if !defined(CONFIG_PAGE_POISONING) \
 | |
| /* && !defined(CONFIG_PAGE_DEBUG_SOMETHING_ELSE) && ... */
 | |
| #error WANT_PAGE_DEBUG_FLAGS is turned on with no debug features!
 | |
| #endif
 | |
| #endif /* CONFIG_WANT_PAGE_DEBUG_FLAGS */
 | |
| 
 | |
| #endif /* LINUX_PAGE_DEBUG_FLAGS_H */
 |