2009-06-12 13:43:41

by Vegard Nossum

[permalink] [raw]
Subject: [GIT PULL] kmemcheck for mainline

Hi Linus,

Please consider pulling the kmemcheck tree;

kmemcheck is a feature which can (at run-time) detect some uses of
uninitialized memory within the kernel, similarly to what Valgrind's memcheck
does for userspace programs. We also have the ability to find use-after-free
errors and leaks of uninitialized data to userspace, both with a false-
positive rate of zero.

kmemcheck is self-contained in the sense that when CONFIG_KMEMCHECK=n, it has
no effect on the compiled kernel whatsoever. Our code has lived in the -tip
tree and been in -next for over a year, and has the acks of x86 and slab
maintainers (Ingo and Pekka). Inclusion in mainline would lower the threshold
for building and running kmemcheck-enabled kernels, which would also
hopefully increase testing coverage of the rest of the kernel code.


Vegard


The following changes since commit 8ebf975608aaebd7feb33d77f07ba21a6380e086:
Randy Dunlap (1):
block: fix kernel-doc in recent block/ changes

are available in the git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/vegard/kmemcheck.git for-linus

Ingo Molnar (40):
Merge branch 'current' of git://git.kernel.org/.../vegard/kmemcheck into kmemcheck2
Merge branch 'linus' into kmemcheck2
Manual merge of tip/x86/irq into kmemcheck
Merge branch 'linus' into kmemcheck
Merge branch 'linus' into kmemcheck
Merge branch 'for-tip' of git://git.kernel.org/.../vegard/kmemcheck into kmemcheck
Merge branch 'linus' into kmemcheck
Merge branch 'linus' into kmemcheck
Merge branch 'linus' into kmemcheck
kmemcheck: export kmemcheck_mark_initialized
Merge branch 'linus' into kmemcheck
Merge branch 'linus' into kmemcheck
Merge commit 'v2.6.27-rc3' into kmemcheck
kmemcheck: build fix
Merge branch 'linus' into kmemcheck
Merge branches 'oprofile' and 'timers/hpet' into x86/core-v4
Merge branch 'linus' into kmemcheck-v2
Merge branch 'x86/core-v4' into kmemcheck-v2
Merge commit 'v2.6.28-rc2' into kmemcheck
Merge commit 'v2.6.28' into kmemcheck
Merge branch 'linus' into kmemcheck
Merge commit 'v2.6.29-rc2' into kmemcheck
Merge branch 'x86/mm' into kmemcheck
Merge branch 'x86/headers' into kmemcheck
Merge branch 'x86/headers' into kmemcheck
Merge branch 'x86/headers' into kmemcheck
Merge branch 'x86/headers' into kmemcheck
Merge branch 'for-ingo' of git://git.kernel.org/.../penberg/slab-2.6 into kmemcheck
Merge branch 'x86/core' into kmemcheck
Merge branch 'core/iommu' into kmemcheck
Merge branch 'for-tip' of git://git.kernel.org/.../vegard/kmemcheck into kmemcheck
Merge branch 'for-tip' of git://git.kernel.org/.../vegard/kmemcheck into kmemcheck
Merge branch 'x86/core' into kmemcheck
Merge branch 'for-tip' of git://git.kernel.org/.../vegard/kmemcheck into kmemcheck
Merge branch 'for-tip' of git://git.kernel.org/.../vegard/kmemcheck into kmemcheck
kmemcheck: fix split_page() of the page allocator, fix
Merge branch 'x86/mm-v2' into kmemcheck
Merge branch 'linus' into kmemcheck
Merge commit 'v2.6.30-rc5' into kmemcheck
Merge branch 'linus' into kmemcheck

Jeremy Fitzhardinge (2):
x86: make _PAGE_HIDDEN conditional
x86: unify pte_hidden

Pekka Enberg (13):
x86: __show_registers() and __show_regs() API unification
slab: move struct kmem_cache to headers
kmemcheck: add Vegard and Pekka to MAINTAINERS
x86: add hooks for kmemcheck on x86_64
slab: add hooks for kmemcheck
kmemcheck: Disable SLUB and SLAB debugging when kmemcheck is enabled
kmemcheck: remove forward declarations from error.c
kmemcheck: make initialization message less confusing
kmemcheck: remove multiple ifdef'd definitions of the same global variable
kmemcheck: move 64-bit ifdef out of kmemcheck_opcode_decode()
kmemcheck: missing whitespace in do_page_fault()
kmemcheck: use kmemcheck_pte_lookup() instead of open-coding it
kmemcheck: make kconfig accessible for other architectures

Randy Dunlap (1):
kmemcheck: include module.h to prevent warnings

Vegard Nossum (76):
x86: add save_stack_trace_bp() for tracing from a specific stack frame
stacktrace: add forward-declaration struct task_struct
tasklets: new tasklet scheduling function
kmemcheck: add the kmemcheck core
x86: add hooks for kmemcheck
kmemcheck: add mm functions
slub: add hooks for kmemcheck
kmemcheck: enable in the x86 Kconfig
kmemcheck: fix sparse warnings
softirq: raise the right softirq
kmemcheck: use the proper comment style
kmemcheck: fix use of uninitialized spinlock
kmemcheck: constrain tracking to non-debugged caches
kmemcheck: mark SMP support BROKEN
kmemcheck: use capital Y/N in kconfig help-texts
kmemcheck: remove unnecessary tests in the slab allocator
kmemcheck: add DMA hooks
kmemcheck: work with sizes in terms of bytes instead of bits
kmemcheck: allow memory accesses that cross page boundaries
kmemcheck: add some more documentation
kmemcheck: add some comments
kmemcheck: save memory contents on use of uninitialized memory
kmemcheck: implement REP MOVS/STOS emulation
kmemcheck: hide/show pages in each iteration of a REP instruction
kmemcheck: rip out the optimized memset()
kmemcheck: rip out SMP code
kmemcheck: hide/show pages in each iteration of a REP instruction #2
kmemcheck: lazy checking for MOVS instructions
Revert "kmemcheck: use set_memory_4k() instead of disabling PSE"
x86: use REP MOVS instruction for memcpy if kmemcheck is enabled
kmemcheck: use set_memory_4k() on x86_64 only
kmemcheck: fix crash in PnP BIOS calls
kmemcheck: tag warning printks
kmemcheck: (finally) use 4k pages for identity mapping
x86: fix mis-merge
kmemcheck: fix mis-merge in sysctl table
kmemcheck: update documentation
kmemcheck: update Kconfig help text
kmemcheck: document the shadow member of struct page
kmemcheck: bitfield API
net: use kmemcheck bitfields API for skbuff
net: annotate bitfields in struct inet_sock
ieee1394: annotate bitfield
ieee1394/csr1212: fix false positive kmemcheck report
kmemcheck: annotate inet_timewait_sock bitfields
kmemcheck: disable fast string operations on P4 CPUs
kmemcheck: rip out REP instruction emulation
kmemcheck: add hooks for page- and sg-dma-mappings
kmemcheck: don't track allocated page tables
kmemcheck: add hooks for the page allocator
kmemcheck: depend on !SLUB_DEBUG_ON
kmemcheck: fix CONFIG_KMEMCHECK=n build failure
kmemcheck: make ftrace and kmemcheck mutually exclusive
kmemcheck: fix an incorrect BUG_ON()
kmemcheck: fix shadow updates that cross page boundaries
crypto: don't track xor test pages with kmemcheck
x86: don't use MMX/SSE in xor routines if kmemcheck is compiled in
kmemcheck: reverse dependencies between DEBUG_PAGEALLOC and KMEMCHECK
kmemcheck: depend on DEBUG_KERNEL
c2port: annotate bitfield for kmemcheck
kmemcheck (bitfields): don't actually initialize the bitfield
net: annotate struct sock bitfield
kmemcheck: add opcode self-testing at boot
kmemcheck: decode sign/zero-extension move instructions correctly
kmemcheck: bitfields: introduce hack to work around gcc bug
trace: annotate bitfields in struct ring_buffer_event
kmemcheck: fix split_page() of the page allocator
kmemcheck: disable CPA self-test
x86: don't track page tables with kmemcheck
Revert "kmemcheck: disable CPA self-test"
kmemcheck: make bitfield annotations be valid C
fs: introduce __getname_gfp()
kmemcheck: add __GFP_NOTRACK_FALSE_POSITIVE flag
kmemcheck: fix do_mount_root() false positive
kmemcheck: fix __send_signal() false positive
kmemcheck: update documentation

Yinghai Lu (1):
x86: introduce bootmem_state

Documentation/kmemcheck.txt | 773 ++++++++++++++++++++++++++++++++++
MAINTAINERS | 8 +
arch/x86/Kconfig | 1 +
arch/x86/Kconfig.debug | 1 +
arch/x86/Makefile | 5 +
arch/x86/include/asm/dma-mapping.h | 8 +
arch/x86/include/asm/kmemcheck.h | 42 ++
arch/x86/include/asm/page_types.h | 8 +
arch/x86/include/asm/pgtable.h | 5 +
arch/x86/include/asm/pgtable_types.h | 9 +-
arch/x86/include/asm/string_32.h | 8 +
arch/x86/include/asm/string_64.h | 8 +
arch/x86/include/asm/thread_info.h | 4 +-
arch/x86/include/asm/xor.h | 5 +
arch/x86/kernel/cpu/intel.c | 23 +
arch/x86/kernel/process.c | 2 +-
arch/x86/kernel/setup.c | 1 +
arch/x86/kernel/stacktrace.c | 7 +
arch/x86/kernel/traps.c | 5 +
arch/x86/mm/Makefile | 2 +
arch/x86/mm/fault.c | 18 +-
arch/x86/mm/init.c | 15 +-
arch/x86/mm/init_32.c | 30 +-
arch/x86/mm/init_64.c | 37 +-
arch/x86/mm/kmemcheck/Makefile | 1 +
arch/x86/mm/kmemcheck/error.c | 228 ++++++++++
arch/x86/mm/kmemcheck/error.h | 15 +
arch/x86/mm/kmemcheck/kmemcheck.c | 637 ++++++++++++++++++++++++++++
arch/x86/mm/kmemcheck/opcode.c | 106 +++++
arch/x86/mm/kmemcheck/opcode.h | 9 +
arch/x86/mm/kmemcheck/pte.c | 22 +
arch/x86/mm/kmemcheck/pte.h | 10 +
arch/x86/mm/kmemcheck/selftest.c | 69 +++
arch/x86/mm/kmemcheck/selftest.h | 6 +
arch/x86/mm/kmemcheck/shadow.c | 162 +++++++
arch/x86/mm/kmemcheck/shadow.h | 16 +
arch/x86/mm/pageattr.c | 2 +-
arch/x86/mm/pgtable.c | 12 +-
crypto/xor.c | 7 +-
drivers/ieee1394/csr1212.c | 2 +
drivers/ieee1394/nodemgr.c | 5 +
drivers/misc/c2port/core.c | 2 +
include/linux/c2port.h | 3 +
include/linux/fs.h | 5 +-
include/linux/gfp.h | 14 +-
include/linux/interrupt.h | 14 +
include/linux/kmemcheck.h | 157 +++++++
include/linux/mm_types.h | 8 +
include/linux/ring_buffer.h | 4 +
include/linux/skbuff.h | 7 +
include/linux/slab.h | 7 +
include/linux/slab_def.h | 81 ++++
include/linux/stacktrace.h | 3 +
include/net/inet_sock.h | 14 +-
include/net/inet_timewait_sock.h | 5 +-
include/net/sock.h | 2 +
init/do_mounts.c | 3 +-
init/main.c | 4 +
kernel/fork.c | 14 +-
kernel/signal.c | 11 +-
kernel/softirq.c | 11 +
kernel/sysctl.c | 11 +
kernel/trace/ring_buffer.c | 3 +
lib/Kconfig.debug | 6 +-
lib/Kconfig.kmemcheck | 91 ++++
mm/Makefile | 1 +
mm/kmemcheck.c | 122 ++++++
mm/page_alloc.c | 18 +
mm/slab.c | 108 +----
mm/slub.c | 38 ++-
net/core/skbuff.c | 8 +
net/core/sock.c | 2 +
net/ipv4/inet_timewait_sock.c | 3 +
73 files changed, 2958 insertions(+), 156 deletions(-)
create mode 100644 Documentation/kmemcheck.txt
create mode 100644 arch/x86/include/asm/kmemcheck.h
create mode 100644 arch/x86/mm/kmemcheck/Makefile
create mode 100644 arch/x86/mm/kmemcheck/error.c
create mode 100644 arch/x86/mm/kmemcheck/error.h
create mode 100644 arch/x86/mm/kmemcheck/kmemcheck.c
create mode 100644 arch/x86/mm/kmemcheck/opcode.c
create mode 100644 arch/x86/mm/kmemcheck/opcode.h
create mode 100644 arch/x86/mm/kmemcheck/pte.c
create mode 100644 arch/x86/mm/kmemcheck/pte.h
create mode 100644 arch/x86/mm/kmemcheck/selftest.c
create mode 100644 arch/x86/mm/kmemcheck/selftest.h
create mode 100644 arch/x86/mm/kmemcheck/shadow.c
create mode 100644 arch/x86/mm/kmemcheck/shadow.h
create mode 100644 include/linux/kmemcheck.h
create mode 100644 lib/Kconfig.kmemcheck
create mode 100644 mm/kmemcheck.c


2009-06-12 13:57:33

by Pekka Enberg

[permalink] [raw]
Subject: Re: [GIT PULL] kmemcheck for mainline

Hi Linus,

On Fri, Jun 12, 2009 at 4:31 PM, Vegard Nossum<[email protected]> wrote:
> Please consider pulling the kmemcheck tree;
>
> kmemcheck is a feature which can (at run-time) detect some uses of
> uninitialized memory within the kernel, similarly to what Valgrind's memcheck
> does for userspace programs. We also have the ability to find use-after-free
> errors and leaks of uninitialized data to userspace, both with a false-
> positive rate of zero.
>
> kmemcheck is self-contained in the sense that when CONFIG_KMEMCHECK=n, it has
> no effect on the compiled kernel whatsoever. Our code has lived in the -tip
> tree and been in -next for over a year, and has the acks of x86 and slab
> maintainers (Ingo and Pekka). Inclusion in mainline would lower the threshold
> for building and running kmemcheck-enabled kernels, which would also
> hopefully increase testing coverage of the rest of the kernel code.

I hope I didn't burn all my karma for this merge window with the slab
early boot patches but:

Acked-by: Pekka Enberg <[email protected]>

for this pull request.

Pekka

2009-06-12 14:01:08

by Ingo Molnar

[permalink] [raw]
Subject: Re: [GIT PULL] kmemcheck for mainline


* Pekka Enberg <[email protected]> wrote:

> Hi Linus,
>
> On Fri, Jun 12, 2009 at 4:31 PM, Vegard Nossum<[email protected]> wrote:
> > Please consider pulling the kmemcheck tree;
> >
> > kmemcheck is a feature which can (at run-time) detect some uses of
> > uninitialized memory within the kernel, similarly to what Valgrind's memcheck
> > does for userspace programs. We also have the ability to find use-after-free
> > errors and leaks of uninitialized data to userspace, both with a false-
> > positive rate of zero.
> >
> > kmemcheck is self-contained in the sense that when CONFIG_KMEMCHECK=n, it has
> > no effect on the compiled kernel whatsoever. Our code has lived in the -tip
> > tree and been in -next for over a year, and has the acks of x86 and slab
> > maintainers (Ingo and Pekka). Inclusion in mainline would lower the threshold
> > for building and running kmemcheck-enabled kernels, which would also
> > hopefully increase testing coverage of the rest of the kernel code.
>
> I hope I didn't burn all my karma for this merge window with the slab
> early boot patches but:
>
> Acked-by: Pekka Enberg <[email protected]>
>
> for this pull request.

+1

I've been testing kmemcheck in -tip for 1.5 years meanwhile and in
terms of maintenance overhead it was never troublesome to have
around.

Ingo

2009-06-12 16:39:11

by Linus Torvalds

[permalink] [raw]
Subject: Re: [GIT PULL] kmemcheck for mainline



On Fri, 12 Jun 2009, Vegard Nossum wrote:
>
> Please consider pulling the kmemcheck tree;

No.

This seems to be 99% merges o fother branches.

I'm no longer pulling from people who can't keep their branches clean and
develop without pulling from me every other day, or pulling from other
random branches. If it gets that many conflicts, I just don't want to see
it - there's something seriously wrong with it.

And if you just merge for some random reason, I don't want to pull it
either.

So in either case, I'm not pulling this.

Just _look_ at that gitk thing. It has several stretches of just "Merge
branch 'linus' into kmemcheck". WITH NO OTHER DEVELOPMENT IN BETWEEN!

This release, I'm only going to pull trees that don't do crazy shit.

Linus

2009-06-12 16:41:55

by Linus Torvalds

[permalink] [raw]
Subject: Re: [GIT PULL] kmemcheck for mainline



On Fri, 12 Jun 2009, Linus Torvalds wrote:
>
> This release, I'm only going to pull trees that don't do crazy shit.

>From another thread yesterday:

> http://www.mail-archive.com/[email protected]/msg39091.html
> http://lkml.org/lkml/2008/5/16/540

Especially that first one, and in that first one, especially about the
"Don't merge upstream/downstream code at random points."

Linus

2009-06-12 16:45:25

by Ingo Molnar

[permalink] [raw]
Subject: Re: [GIT PULL] kmemcheck for mainline


* Linus Torvalds <[email protected]> wrote:

> On Fri, 12 Jun 2009, Vegard Nossum wrote:
> >
> > Please consider pulling the kmemcheck tree;
>
> No.
>
> This seems to be 99% merges o fother branches.
>
> I'm no longer pulling from people who can't keep their branches
> clean and develop without pulling from me every other day, or
> pulling from other random branches. If it gets that many
> conflicts, I just don't want to see it - there's something
> seriously wrong with it.
>
> And if you just merge for some random reason, I don't want to pull
> it either.
>
> So in either case, I'm not pulling this.
>
> Just _look_ at that gitk thing. It has several stretches of just
> "Merge branch 'linus' into kmemcheck". WITH NO OTHER DEVELOPMENT
> IN BETWEEN!

This is an ancient one year old tree :-/

Vegard, i suspect you are best off by creating a clean, rebased
(same-content) series linear tree out of the patches - with all
fixes backmerged and there being a good logical order of patches.

Since it will be same-content it should be doable in short order. I
can do it too if you dont have the time.

Ingo

2009-06-15 14:59:50

by Vegard Nossum

[permalink] [raw]
Subject: Re: [GIT PULL] kmemcheck for mainline


Hi,

2009/6/12 Linus Torvalds <[email protected]>:
>
>
> On Fri, 12 Jun 2009, Vegard Nossum wrote:
>>
>> Please consider pulling the kmemcheck tree;
>
> No.
>
> This seems to be 99% merges o fother branches.
>

I redid the tree by rebasing. I've backported and incorporated fixes except
in the (few) cases where multiple authors were involved, in order to preserve
authorship information. I rebased against the same version that the previous
pull request was merged to; this allows us to easily view the difference
between the two pull requests (minus the top commit, which is a merge with
your latest tree):

$ git diff kmemcheck/for-linus..kmemcheck/for-linus2^

and account for any discrepancies (see the bottom of this e-mail). I've
tested the new tree on x86 and x86_64 with and without kmemcheck.


The following changes since commit 45e3e1935e2857c54783291107d33323b3ef33c8:
Linus Torvalds (1):
Merge branch 'master' of git://git.kernel.org/.../sam/kbuild-next

are available in the git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/vegard/kmemcheck.git for-linus2


(Note: The top commit is a merge with your latest tree to get rid of a
MAINTAINERS conflict; if you prefer to get rid of this merge commit as well,
you could merge for-linus2^ instead and resolve it yourself.)


Jeremy Fitzhardinge (2):
x86: make _PAGE_HIDDEN conditional
x86: unify pte_hidden

Pekka Enberg (9):
slab: move struct kmem_cache to headers
kmemcheck: add Vegard and Pekka to MAINTAINERS
kmemcheck: remove forward declarations from error.c
kmemcheck: make initialization message less confusing
kmemcheck: remove multiple ifdef'd definitions of the same global variable
kmemcheck: move 64-bit ifdef out of kmemcheck_opcode_decode()
kmemcheck: use kmemcheck_pte_lookup() instead of open-coding it
slab: add hooks for kmemcheck
kmemcheck: make kconfig accessible for other architectures

Randy Dunlap (1):
kmemcheck: include module.h to prevent warnings

Vegard Nossum (28):
x86: add save_stack_trace_bp() for tracing from a specific stack frame
stacktrace: add forward-declaration struct task_struct
tasklets: new tasklet scheduling function
kmemcheck: add the kmemcheck documentation
kmemcheck: add the kmemcheck core
x86: add hooks for kmemcheck
kmemcheck: add mm functions
kmemcheck: add DMA hooks
slub: add hooks for kmemcheck
crypto: don't track xor test pages with kmemcheck
kmemcheck: don't track page tables
kmemcheck: add hooks for page- and sg-dma-mappings
kmemcheck: add hooks for the page allocator
kmemcheck: enable in the x86 Kconfig
kmemcheck: add opcode self-testing at boot
kmemcheck: introduce bitfield API
net: use kmemcheck bitfields API for skbuff
net: annotate bitfields in struct inet_sock
ieee1394: annotate bitfield
ieee1394/csr1212: fix false positive kmemcheck report
net: annotate inet_timewait_sock bitfields
c2port: annotate bitfield for kmemcheck
net: annotate struct sock bitfield
trace: annotate bitfields in struct ring_buffer_event
fs: introduce __getname_gfp()
fs: fix do_mount_root() false positive kmemcheck warning
signal: fix __send_signal() false positive kmemcheck warning
Merge commit 'linus/master' into HEAD

Documentation/kmemcheck.txt | 773 ++++++++++++++++++++++++++++++++++
MAINTAINERS | 8 +
arch/x86/Kconfig | 1 +
arch/x86/Makefile | 5 +
arch/x86/include/asm/dma-mapping.h | 7 +
arch/x86/include/asm/kmemcheck.h | 42 ++
arch/x86/include/asm/pgtable.h | 5 +
arch/x86/include/asm/pgtable_types.h | 9 +-
arch/x86/include/asm/string_32.h | 8 +
arch/x86/include/asm/string_64.h | 8 +
arch/x86/include/asm/thread_info.h | 4 +-
arch/x86/include/asm/xor.h | 5 +
arch/x86/kernel/cpu/intel.c | 23 +
arch/x86/kernel/process.c | 2 +-
arch/x86/kernel/stacktrace.c | 7 +
arch/x86/kernel/traps.c | 5 +
arch/x86/mm/Makefile | 2 +
arch/x86/mm/fault.c | 18 +-
arch/x86/mm/init.c | 2 +-
arch/x86/mm/init_32.c | 2 +-
arch/x86/mm/init_64.c | 4 +-
arch/x86/mm/kmemcheck/Makefile | 1 +
arch/x86/mm/kmemcheck/error.c | 228 ++++++++++
arch/x86/mm/kmemcheck/error.h | 15 +
arch/x86/mm/kmemcheck/kmemcheck.c | 640 ++++++++++++++++++++++++++++
arch/x86/mm/kmemcheck/opcode.c | 106 +++++
arch/x86/mm/kmemcheck/opcode.h | 9 +
arch/x86/mm/kmemcheck/pte.c | 22 +
arch/x86/mm/kmemcheck/pte.h | 10 +
arch/x86/mm/kmemcheck/selftest.c | 69 +++
arch/x86/mm/kmemcheck/selftest.h | 6 +
arch/x86/mm/kmemcheck/shadow.c | 162 +++++++
arch/x86/mm/kmemcheck/shadow.h | 16 +
arch/x86/mm/pageattr.c | 2 +-
arch/x86/mm/pgtable.c | 12 +-
crypto/xor.c | 7 +-
drivers/ieee1394/csr1212.c | 2 +
drivers/ieee1394/nodemgr.c | 5 +
drivers/misc/c2port/core.c | 2 +
include/linux/c2port.h | 3 +
include/linux/fs.h | 5 +-
include/linux/gfp.h | 14 +-
include/linux/interrupt.h | 14 +
include/linux/kmemcheck.h | 153 +++++++
include/linux/mm_types.h | 8 +
include/linux/ring_buffer.h | 4 +
include/linux/skbuff.h | 7 +
include/linux/slab.h | 7 +
include/linux/slab_def.h | 81 ++++
include/linux/stacktrace.h | 3 +
include/net/inet_sock.h | 14 +-
include/net/inet_timewait_sock.h | 5 +-
include/net/sock.h | 2 +
init/do_mounts.c | 3 +-
init/main.c | 1 +
kernel/fork.c | 14 +-
kernel/signal.c | 11 +-
kernel/softirq.c | 11 +
kernel/sysctl.c | 12 +
kernel/trace/ring_buffer.c | 3 +
lib/Kconfig.debug | 6 +-
lib/Kconfig.kmemcheck | 91 ++++
mm/Kconfig.debug | 1 +
mm/Makefile | 1 +
mm/kmemcheck.c | 122 ++++++
mm/page_alloc.c | 18 +
mm/slab.c | 108 +----
mm/slub.c | 38 ++-
net/core/skbuff.c | 8 +
net/core/sock.c | 2 +
net/ipv4/inet_timewait_sock.c | 3 +
71 files changed, 2899 insertions(+), 128 deletions(-)
create mode 100644 Documentation/kmemcheck.txt
create mode 100644 arch/x86/include/asm/kmemcheck.h
create mode 100644 arch/x86/mm/kmemcheck/Makefile
create mode 100644 arch/x86/mm/kmemcheck/error.c
create mode 100644 arch/x86/mm/kmemcheck/error.h
create mode 100644 arch/x86/mm/kmemcheck/kmemcheck.c
create mode 100644 arch/x86/mm/kmemcheck/opcode.c
create mode 100644 arch/x86/mm/kmemcheck/opcode.h
create mode 100644 arch/x86/mm/kmemcheck/pte.c
create mode 100644 arch/x86/mm/kmemcheck/pte.h
create mode 100644 arch/x86/mm/kmemcheck/selftest.c
create mode 100644 arch/x86/mm/kmemcheck/selftest.h
create mode 100644 arch/x86/mm/kmemcheck/shadow.c
create mode 100644 arch/x86/mm/kmemcheck/shadow.h
create mode 100644 include/linux/kmemcheck.h
create mode 100644 lib/Kconfig.kmemcheck
create mode 100644 mm/kmemcheck.c

============================================

These are the differences since previous pull request, with some inline
comments explaining why they're there. I don't actually expect you to look at
this, but in case you do, here's proof that I was very careful to ensure that
my rebase didn't do anything I didn't intend to do (that should make up for
the fact that the tree was rebased not so many hours ago, and thus has lost
some of the credibility of months of testing in Ingo's test farm).

$ git diff --stat kmemcheck/for-linus..kmemcheck/for-linus2^

MAINTAINERS | 12 ++++++------
[reordered to match alphabetical order]

arch/x86/Kconfig.debug | 1 -
[this was the result of a mismerge; fixed now]

arch/x86/include/asm/dma-mapping.h | 7 +++----
[call kmemcheck hooks _after_ the sanity checks]

arch/x86/include/asm/page_types.h | 8 --------
[zapped unrelated patch]

arch/x86/include/asm/pgtable.h | 10 +++++-----
[moved pte_hidden() to stay with the other pte_*() functions]

arch/x86/kernel/setup.c | 1 -
[zapped unrelated patch]

arch/x86/kernel/traps.c | 2 +-
[include file reorder]

arch/x86/mm/init.c | 13 ++++++-------
arch/x86/mm/init_32.c | 28 ++++++++--------------------
arch/x86/mm/init_64.c | 33 ++++++++++++++-------------------
[zapped unrelated patch]

arch/x86/mm/kmemcheck/kmemcheck.c | 7 +++++--
include/linux/kmemcheck.h | 8 ++------
init/main.c | 5 +----
[made kmemcheck_init() an early initcall]

kernel/sysctl.c | 21 +++++++++++----------
[use /proc/sys/kernel/kmemcheck instead of /proc/sys/vm/kmemcheck; mismerge fix]

mm/Kconfig.debug | 1 +
[the second half of the mismerge in arch/x86/Kconfig.debug; see above]

mm/slab.c | 2 +-
[bugfix]

mm/slub.c | 2 +-
[include file reorder]

17 files changed, 65 insertions(+), 96 deletions(-)


Vegard

2009-06-16 16:22:09

by Pekka Enberg

[permalink] [raw]
Subject: Re: [GIT PULL] kmemcheck for mainline

On Mon, Jun 15, 2009 at 5:59 PM, Vegard Nossum<[email protected]> wrote:
> I redid the tree by rebasing. I've backported and incorporated fixes except
> in the (few) cases where multiple authors were involved, in order to preserve
> authorship information. I rebased against the same version that the previous
> pull request was merged to; this allows us to easily view the difference
> between the two pull requests (minus the top commit, which is a merge with
> your latest tree):
>
> ?$ git diff kmemcheck/for-linus..kmemcheck/for-linus2^
>
> and account for any discrepancies (see the bottom of this e-mail). I've
> tested the new tree on x86 and x86_64 with and without kmemcheck.

Looks good to me. Ingo, if Linus doesn't pull this for -rc1, I think
you should nuke the kmemcheck branch in -tip and use this instead,
right?

Pekka