Browse Source

Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vegard/kmemcheck

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vegard/kmemcheck:
  kmemcheck: add missing braces to do-while in kmemcheck_annotate_bitfield
  kmemcheck: update documentation
  kmemcheck: depend on HAVE_ARCH_KMEMCHECK
  kmemcheck: remove useless check
  kmemcheck: remove duplicated #include
Linus Torvalds 15 years ago
parent
commit
991d79b0d1

+ 1 - 20
Documentation/kmemcheck.txt

@@ -43,26 +43,7 @@ feature.
 1. Downloading
 1. Downloading
 ==============
 ==============
 
 
-kmemcheck can only be downloaded using git. If you want to write patches
-against the current code, you should use the kmemcheck development branch of
-the tip tree. It is also possible to use the linux-next tree, which also
-includes the latest version of kmemcheck.
-
-Assuming that you've already cloned the linux-2.6.git repository, all you
-have to do is add the -tip tree as a remote, like this:
-
-	$ git remote add tip git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip.git
-
-To actually download the tree, fetch the remote:
-
-	$ git fetch tip
-
-And to check out a new local branch with the kmemcheck code:
-
-	$ git checkout -b kmemcheck tip/kmemcheck
-
-General instructions for the -tip tree can be found here:
-http://people.redhat.com/mingo/tip.git/readme.txt
+As of version 2.6.31-rc1, kmemcheck is included in the mainline kernel.
 
 
 
 
 2. Configuring and compiling
 2. Configuring and compiling

+ 0 - 3
arch/x86/mm/kmemcheck/kmemcheck.c

@@ -225,9 +225,6 @@ void kmemcheck_hide(struct pt_regs *regs)
 
 
 	BUG_ON(!irqs_disabled());
 	BUG_ON(!irqs_disabled());
 
 
-	if (data->balance == 0)
-		return;
-
 	if (unlikely(data->balance != 1)) {
 	if (unlikely(data->balance != 1)) {
 		kmemcheck_show_all();
 		kmemcheck_show_all();
 		kmemcheck_error_save_bug(regs);
 		kmemcheck_error_save_bug(regs);

+ 4 - 1
include/linux/kmemcheck.h

@@ -144,7 +144,10 @@ static inline bool kmemcheck_is_obj_initialized(unsigned long addr, size_t size)
 	int name##_end[0];
 	int name##_end[0];
 
 
 #define kmemcheck_annotate_bitfield(ptr, name)				\
 #define kmemcheck_annotate_bitfield(ptr, name)				\
-	do if (ptr) {							\
+	do {								\
+		if (!ptr)						\
+			break;						\
+									\
 		int _n = (long) &((ptr)->name##_end)			\
 		int _n = (long) &((ptr)->name##_end)			\
 			- (long) &((ptr)->name##_begin);		\
 			- (long) &((ptr)->name##_begin);		\
 		BUILD_BUG_ON(_n < 0);					\
 		BUILD_BUG_ON(_n < 0);					\

+ 3 - 0
lib/Kconfig.kmemcheck

@@ -1,6 +1,8 @@
 config HAVE_ARCH_KMEMCHECK
 config HAVE_ARCH_KMEMCHECK
 	bool
 	bool
 
 
+if HAVE_ARCH_KMEMCHECK
+
 menuconfig KMEMCHECK
 menuconfig KMEMCHECK
 	bool "kmemcheck: trap use of uninitialized memory"
 	bool "kmemcheck: trap use of uninitialized memory"
 	depends on DEBUG_KERNEL
 	depends on DEBUG_KERNEL
@@ -89,3 +91,4 @@ config KMEMCHECK_BITOPS_OK
 	  accesses where not all the bits are initialized at the same time.
 	  accesses where not all the bits are initialized at the same time.
 	  This may also hide some real bugs.
 	  This may also hide some real bugs.
 
 
+endif