mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
generic debug pagealloc
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>
This commit is contained in:
parent
610a77e04a
commit
6a11f75b6a
16 changed files with 202 additions and 19 deletions
30
include/linux/page-debug-flags.h
Normal file
30
include/linux/page-debug-flags.h
Normal file
|
@ -0,0 +1,30 @@
|
|||
#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 */
|
Loading…
Add table
Add a link
Reference in a new issue