mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-18 17:54:13 +08:00
dfec072ecd
General description: kmemcheck is a patch to the linux kernel that detects use of uninitialized memory. It does this by trapping every read and write to memory that was allocated dynamically (e.g. using kmalloc()). If a memory address is read that has not previously been written to, a message is printed to the kernel log. Thanks to Andi Kleen for the set_memory_4k() solution. Andrew Morton suggested documenting the shadow member of struct page. Signed-off-by: Vegard Nossum <vegardno@ifi.uio.no> Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi> [export kmemcheck_mark_initialized] [build fix for setup_max_cpus] Signed-off-by: Ingo Molnar <mingo@elte.hu> [rebased for mainline inclusion] Signed-off-by: Vegard Nossum <vegardno@ifi.uio.no>
23 lines
319 B
C
23 lines
319 B
C
#include <linux/mm.h>
|
|
|
|
#include <asm/pgtable.h>
|
|
|
|
#include "pte.h"
|
|
|
|
pte_t *kmemcheck_pte_lookup(unsigned long address)
|
|
{
|
|
pte_t *pte;
|
|
unsigned int level;
|
|
|
|
pte = lookup_address(address, &level);
|
|
if (!pte)
|
|
return NULL;
|
|
if (level != PG_LEVEL_4K)
|
|
return NULL;
|
|
if (!pte_hidden(*pte))
|
|
return NULL;
|
|
|
|
return pte;
|
|
}
|
|
|