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 */
|