summaryrefslogtreecommitdiffstats
path: root/arch/x86/mm/kmemcheck/kmemcheck.c
diff options
context:
space:
mode:
authorCatalin Marinas2010-02-08 12:16:24 +0100
committerPekka Enberg2010-02-17 20:39:08 +0100
commit81fc03909a80bead8f553287a2b749a1d29dca64 (patch)
tree6c62a780be628ea551bf1e5854260ce94608c521 /arch/x86/mm/kmemcheck/kmemcheck.c
parentLinux 2.6.33-rc8 (diff)
downloadkernel-qcow2-linux-81fc03909a80bead8f553287a2b749a1d29dca64.tar.gz
kernel-qcow2-linux-81fc03909a80bead8f553287a2b749a1d29dca64.tar.xz
kernel-qcow2-linux-81fc03909a80bead8f553287a2b749a1d29dca64.zip
kmemcheck: Test the full object in kmemcheck_is_obj_initialized()
This is a fix for bug #14845 (bugzilla.kernel.org). The update_checksum() function in mm/kmemleak.c calls kmemcheck_is_obj_initialised() before scanning an object. When KMEMCHECK_PARTIAL_OK is enabled, this function returns true. However, the crc32_le() reads smaller intervals (32-bit) for which kmemleak_is_obj_initialised() may be false leading to a kmemcheck warning. Note that kmemcheck_is_obj_initialized() is currently only used by kmemleak before scanning a memory location. Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Christian Casteyde <casteyde.christian@free.fr> Cc: Vegard Nossum <vegardno@ifi.uio.no> Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Diffstat (limited to 'arch/x86/mm/kmemcheck/kmemcheck.c')
-rw-r--r--arch/x86/mm/kmemcheck/kmemcheck.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/x86/mm/kmemcheck/kmemcheck.c b/arch/x86/mm/kmemcheck/kmemcheck.c
index 8cc183344140..b3b531a4f8e5 100644
--- a/arch/x86/mm/kmemcheck/kmemcheck.c
+++ b/arch/x86/mm/kmemcheck/kmemcheck.c
@@ -337,7 +337,7 @@ bool kmemcheck_is_obj_initialized(unsigned long addr, size_t size)
if (!shadow)
return true;
- status = kmemcheck_shadow_test(shadow, size);
+ status = kmemcheck_shadow_test_all(shadow, size);
return status == KMEMCHECK_SHADOW_INITIALIZED;
}