提交 991d79b0 编写于 作者: L Linus Torvalds

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
...@@ -43,26 +43,7 @@ feature. ...@@ -43,26 +43,7 @@ feature.
1. Downloading 1. Downloading
============== ==============
kmemcheck can only be downloaded using git. If you want to write patches As of version 2.6.31-rc1, kmemcheck is included in the mainline kernel.
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
2. Configuring and compiling 2. Configuring and compiling
......
...@@ -225,9 +225,6 @@ void kmemcheck_hide(struct pt_regs *regs) ...@@ -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);
......
...@@ -144,7 +144,10 @@ static inline bool kmemcheck_is_obj_initialized(unsigned long addr, size_t size) ...@@ -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); \
......
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 ...@@ -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
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册