Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vegard...
[linux-2.6-block.git] / arch / x86 / mm / kmemcheck / kmemcheck.c
index 5b99004fb4becbead27268039a3e37757759dc2c..8cc183344140cf1503df9efdc87bdad6e9f23bcf 100644 (file)
@@ -328,6 +328,20 @@ static void kmemcheck_read_strict(struct pt_regs *regs,
        kmemcheck_shadow_set(shadow, size);
 }
 
+bool kmemcheck_is_obj_initialized(unsigned long addr, size_t size)
+{
+       enum kmemcheck_shadow status;
+       void *shadow;
+
+       shadow = kmemcheck_shadow_lookup(addr);
+       if (!shadow)
+               return true;
+
+       status = kmemcheck_shadow_test(shadow, size);
+
+       return status == KMEMCHECK_SHADOW_INITIALIZED;
+}
+
 /* Access may cross page boundary */
 static void kmemcheck_read(struct pt_regs *regs,
        unsigned long addr, unsigned int size)