public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [GIT PULL] kmemcheck for mainline
@ 2009-06-12 13:31 Vegard Nossum
  2009-06-12 13:57 ` Pekka Enberg
  2009-06-12 16:38 ` Linus Torvalds
  0 siblings, 2 replies; 8+ messages in thread
From: Vegard Nossum @ 2009-06-12 13:31 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Ingo Molnar, Pekka Enberg, Andrew Morton, linux-kernel

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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [GIT PULL] kmemcheck for mainline
  2009-06-12 13:31 [GIT PULL] kmemcheck for mainline Vegard Nossum
@ 2009-06-12 13:57 ` Pekka Enberg
  2009-06-12 14:00   ` Ingo Molnar
  2009-06-12 16:38 ` Linus Torvalds
  1 sibling, 1 reply; 8+ messages in thread
From: Pekka Enberg @ 2009-06-12 13:57 UTC (permalink / raw)
  To: Vegard Nossum; +Cc: Linus Torvalds, Ingo Molnar, Andrew Morton, linux-kernel

Hi Linus,

On Fri, Jun 12, 2009 at 4:31 PM, Vegard Nossum<vegard.nossum@gmail.com> 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 <penberg@cs.helsinki.fi>

for this pull request.

                                      Pekka

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [GIT PULL] kmemcheck for mainline
  2009-06-12 13:57 ` Pekka Enberg
@ 2009-06-12 14:00   ` Ingo Molnar
  0 siblings, 0 replies; 8+ messages in thread
From: Ingo Molnar @ 2009-06-12 14:00 UTC (permalink / raw)
  To: Pekka Enberg; +Cc: Vegard Nossum, Linus Torvalds, Andrew Morton, linux-kernel


* Pekka Enberg <penberg@cs.helsinki.fi> wrote:

> Hi Linus,
> 
> On Fri, Jun 12, 2009 at 4:31 PM, Vegard Nossum<vegard.nossum@gmail.com> 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 <penberg@cs.helsinki.fi>
> 
> 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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [GIT PULL] kmemcheck for mainline
  2009-06-12 13:31 [GIT PULL] kmemcheck for mainline Vegard Nossum
  2009-06-12 13:57 ` Pekka Enberg
@ 2009-06-12 16:38 ` Linus Torvalds
  2009-06-12 16:41   ` Linus Torvalds
                     ` (2 more replies)
  1 sibling, 3 replies; 8+ messages in thread
From: Linus Torvalds @ 2009-06-12 16:38 UTC (permalink / raw)
  To: Vegard Nossum
  Cc: Ingo Molnar, Pekka Enberg, Andrew Morton,
	Linux Kernel Mailing List



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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [GIT PULL] kmemcheck for mainline
  2009-06-12 16:38 ` Linus Torvalds
@ 2009-06-12 16:41   ` Linus Torvalds
  2009-06-12 16:45   ` Ingo Molnar
  2009-06-15 14:59   ` Vegard Nossum
  2 siblings, 0 replies; 8+ messages in thread
From: Linus Torvalds @ 2009-06-12 16:41 UTC (permalink / raw)
  To: Vegard Nossum
  Cc: Ingo Molnar, Pekka Enberg, Andrew Morton,
	Linux Kernel Mailing List



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/dri-devel@lists.sourceforge.net/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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [GIT PULL] kmemcheck for mainline
  2009-06-12 16:38 ` Linus Torvalds
  2009-06-12 16:41   ` Linus Torvalds
@ 2009-06-12 16:45   ` Ingo Molnar
  2009-06-15 14:59   ` Vegard Nossum
  2 siblings, 0 replies; 8+ messages in thread
From: Ingo Molnar @ 2009-06-12 16:45 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Vegard Nossum, Pekka Enberg, Andrew Morton,
	Linux Kernel Mailing List


* Linus Torvalds <torvalds@linux-foundation.org> 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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [GIT PULL] kmemcheck for mainline
  2009-06-12 16:38 ` Linus Torvalds
  2009-06-12 16:41   ` Linus Torvalds
  2009-06-12 16:45   ` Ingo Molnar
@ 2009-06-15 14:59   ` Vegard Nossum
  2009-06-16 16:21     ` Pekka Enberg
  2 siblings, 1 reply; 8+ messages in thread
From: Vegard Nossum @ 2009-06-15 14:59 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Ingo Molnar, Pekka Enberg, Andrew Morton,
	Linux Kernel Mailing List


Hi,

2009/6/12 Linus Torvalds <torvalds@linux-foundation.org>:
>
>
> 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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [GIT PULL] kmemcheck for mainline
  2009-06-15 14:59   ` Vegard Nossum
@ 2009-06-16 16:21     ` Pekka Enberg
  0 siblings, 0 replies; 8+ messages in thread
From: Pekka Enberg @ 2009-06-16 16:21 UTC (permalink / raw)
  To: Vegard Nossum
  Cc: Linus Torvalds, Ingo Molnar, Andrew Morton,
	Linux Kernel Mailing List

On Mon, Jun 15, 2009 at 5:59 PM, Vegard Nossum<vegard.nossum@gmail.com> 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

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2009-06-16 16:22 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-06-12 13:31 [GIT PULL] kmemcheck for mainline Vegard Nossum
2009-06-12 13:57 ` Pekka Enberg
2009-06-12 14:00   ` Ingo Molnar
2009-06-12 16:38 ` Linus Torvalds
2009-06-12 16:41   ` Linus Torvalds
2009-06-12 16:45   ` Ingo Molnar
2009-06-15 14:59   ` Vegard Nossum
2009-06-16 16:21     ` Pekka Enberg

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox