Patch "kmemcheck: rip it out" has been added to the 4.14-stable tree
Subsystems (10)
This is a note to let you know that I've just added the patch titled
kmemcheck: rip it out
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
kmemcheck-rip-it-out.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
4675ff05de2d76d167336b368bd07f3fef6ed5a6Mon Sep 17 00:00:00 2001
From: "Levin, Alexander (Sasha Levin)" <[email protected]>
Date: Wed, 15 Nov 2017 17:36:02 -0800
Subject: kmemcheck: rip it out
From: Levin, Alexander (Sasha Levin) <[email protected]>
commit 4675ff05de2d76d167336b368bd07f3fef6ed5a6 upstream.
Fix up makefiles, remove references, and git rm kmemcheck.
--- Documentation/admin-guide/kernel-parameters.txt | 7 Documentation/dev-tools/index.rst | 1 Documentation/dev-tools/kmemcheck.rst | 733 ------------------------ MAINTAINERS | 10 arch/x86/Kconfig | 3 arch/x86/include/asm/kmemcheck.h | 42 - arch/x86/include/asm/string_32.h | 9 arch/x86/include/asm/string_64.h | 8 arch/x86/kernel/cpu/intel.c | 15 arch/x86/mm/Makefile | 2 arch/x86/mm/init.c | 5 arch/x86/mm/kmemcheck/Makefile | 1 arch/x86/mm/kmemcheck/error.c | 227 ------- arch/x86/mm/kmemcheck/error.h | 15 arch/x86/mm/kmemcheck/kmemcheck.c | 658 --------------------- 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 | 70 -- arch/x86/mm/kmemcheck/selftest.h | 6 arch/x86/mm/kmemcheck/shadow.c | 173 ----- arch/x86/mm/kmemcheck/shadow.h | 18 include/linux/interrupt.h | 15 include/linux/kmemcheck.h | 171 ----- kernel/softirq.c | 10 kernel/sysctl.c | 10 lib/Kconfig.debug | 6 lib/Kconfig.kmemcheck | 94 --- mm/Kconfig.debug | 1 mm/Makefile | 2 mm/kmemcheck.c | 125 ---- mm/slub.c | 5 scripts/kernel-doc | 2 tools/include/linux/kmemcheck.h | 8 35 files changed, 7 insertions(+), 2592 deletions(-)
Documentation/admin-guide/kernel-parameters.txt +0 -7
@@ -1841,13 +1841,6 @@ Built with CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF=y, the default is off. - kmemcheck= [X86] Boot-time kmemcheck enable/disable/one-shot mode - Valid arguments: 0, 1, 2 - kmemcheck=0 (disabled) - kmemcheck=1 (enabled) - kmemcheck=2 (one-shot mode) - Default: 2 (one-shot mode) - kvm.ignore_msrs=[KVM] Ignore guest accesses to unhandled MSRs. Default is 0 (don't ignore, but inject #GP)
Documentation/dev-tools/index.rst +0 -1
@@ -21,7 +21,6 @@ whole; patches welcome! kasan ubsan kmemleak - kmemcheck gdb-kernel-debugging kgdb kselftest
Documentation/dev-tools/kmemcheck.rst deleted +0 -733
733 lines not on this page · raw message
MAINTAINERS +0 -10
@@ -7670,16 +7670,6 @@ F: include/linux/kdb.h F: include/linux/kgdb.h F: kernel/debug/ -KMEMCHECK -M: Vegard Nossum <[email protected]> -M: Pekka Enberg <[email protected]> -S: Maintained -F: Documentation/dev-tools/kmemcheck.rst -F: arch/x86/include/asm/kmemcheck.h -F: arch/x86/mm/kmemcheck/ -F: include/linux/kmemcheck.h -F: mm/kmemcheck.c - KMEMLEAK M: Catalin Marinas <[email protected]> S: Maintained
arch/x86/Kconfig +1 -2
@@ -111,7 +111,6 @@ config X86 select HAVE_ARCH_JUMP_LABEL select HAVE_ARCH_KASAN if X86_64 select HAVE_ARCH_KGDB - select HAVE_ARCH_KMEMCHECK select HAVE_ARCH_MMAP_RND_BITS if MMU select HAVE_ARCH_MMAP_RND_COMPAT_BITS if MMU && COMPAT select HAVE_ARCH_COMPAT_MMAP_BASES if MMU && COMPAT
@@ -1443,7 +1442,7 @@ config ARCH_DMA_ADDR_T_64BIT config X86_DIRECT_GBPAGES def_bool y - depends on X86_64 && !DEBUG_PAGEALLOC && !KMEMCHECK + depends on X86_64 && !DEBUG_PAGEALLOC ---help--- Certain kernel features effectively disable kernel linear 1 GB mappings (even if the CPU otherwise
arch/x86/include/asm/kmemcheck.h +0 -42
43 lines not on this page · raw message
arch/x86/include/asm/string_32.h +0 -9
@@ -179,8 +179,6 @@ static inline void *__memcpy3d(void *to,* No 3D Now! */ -#ifndef CONFIG_KMEMCHECK -#if (__GNUC__ >=4 )#define memcpy (t, f, n) __builtin_memcpy(t, f, n)#else
@@ -189,13 +187,6 @@ static inline void *__memcpy3d(void *to, ? __constant_memcpy((t), (f), (n)) \ : __memcpy((t), (f), (n)))#endif -#else -/* -* kmemcheck becomes very happy if we use the REP instructions unconditionally, -* because it means that we know both memory operands in advance. -*/ -#define memcpy (t, f, n) __memcpy((t), (f), (n)) -#endif #endif #endif /* !CONFIG_FORTIFY_SOURCE */
arch/x86/include/asm/string_64.h +0 -8
@@ -33,7 +33,6 @@ extern void *memcpy(void *to, const voidextern void *__memcpy (void *to,const void *from,size_t len);#ifndef CONFIG_FORTIFY_SOURCE -#ifndef CONFIG_KMEMCHECK #if (__GNUC__ ==4 && __GNUC_MINOR__ <3 ) || __GNUC__ <4 #define memcpy (dst, src, len) \ ({ \
@@ -46,13 +45,6 @@ extern void *__memcpy(void *to, const vo __ret; \ })#endif -#else -/* -* kmemcheck becomes very happy if we use the REP instructions unconditionally, -* because it means that we know both memory operands in advance. -*/ -#define memcpy (dst, src, len) __inline_memcpy((dst), (src), (len)) -#endif #endif /* !CONFIG_FORTIFY_SOURCE */ #define __HAVE_ARCH_MEMSET
arch/x86/kernel/cpu/intel.c +0 -15
@@ -250,21 +250,6 @@ static void early_init_intel(struct cpuiif (c->x86 ==6 && c->x86_model <15 )clear_cpu_cap (c,X86_FEATURE_PAT ); -#ifdef CONFIG_KMEMCHECK -/* -* P4s have a "fast strings" feature which causes single- -* stepping REP instructions to only generate a #DB on -* cache-line boundaries. -* -* Ingo Molnar reported a Pentium D (model 6) and a Xeon -* (model 2) with the same problem. -*/ -if (c->x86 ==15 ) -if (msr_clear_bit (MSR_IA32_MISC_ENABLE , -MSR_IA32_MISC_ENABLE_FAST_STRING_BIT ) >0 ) -pr_info ("kmemcheck: Disabling fast string operations\n" ); -#endif -/* * If fast string is not enabled in IA32_MISC_ENABLE for any reason, * clear the fast string and enhanced fast string CPU capabilities.
arch/x86/mm/Makefile +0 -2
@@ -29,8 +29,6 @@ obj-$(CONFIG_X86_PTDUMP) += debug_pageta obj-$(CONFIG_HIGHMEM) += highmem_32.o -obj-$(CONFIG_KMEMCHECK) += kmemcheck/ - KASAN_SANITIZE_kasan_init_$(BITS).o := n obj-$(CONFIG_KASAN) += kasan_init_$(BITS).o
arch/x86/mm/init.c +2 -3
@@ -170,12 +170,11 @@ static void enable_global_pages(void)static void __init probe_page_size_mask (void ) {/* -* For CONFIG_KMEMCHECK or pagealloc debugging, identity mapping will -* use small pages. +* For pagealloc debugging, identity mapping will use small pages. * This will simplify cpa(), which otherwise needs to support splitting * large pages into small in interrupt context, etc. */ -if (boot_cpu_has (X86_FEATURE_PSE ) && !debug_pagealloc_enabled () && !IS_ENABLED (CONFIG_KMEMCHECK )) +if (boot_cpu_has (X86_FEATURE_PSE ) && !debug_pagealloc_enabled ()) page_size_mask |=1 <<PG_LEVEL_2M ;else direct_gbpages =0 ;
arch/x86/mm/kmemcheck/Makefile deleted +0 -1
@@ -1 +0,0 @@ -obj-y := error.o kmemcheck.o opcode.o pte.o selftest.o shadow.o
arch/x86/mm/kmemcheck/error.c +0 -227
228 lines not on this page · raw message
arch/x86/mm/kmemcheck/error.h +0 -15
@@ -1,16 +1 @@/* SPDX-License-Identifier: GPL-2.0 */ -#ifndef ARCH__X86__MM__KMEMCHECK__ERROR_H -#define ARCH__X86__MM__KMEMCHECK__ERROR_H - -#include <linux/ptrace.h> - -#include "shadow.h" - -void kmemcheck_error_save (enum kmemcheck_shadow state, -unsigned long address,unsigned int size,struct pt_regs *regs); - -void kmemcheck_error_save_bug (struct pt_regs *regs); - -void kmemcheck_error_recall (void ); - -#endif
arch/x86/mm/kmemcheck/kmemcheck.c deleted +0 -658
658 lines not on this page · raw message
arch/x86/mm/kmemcheck/opcode.c +0 -106
107 lines not on this page · raw message
arch/x86/mm/kmemcheck/opcode.h +0 -9
@@ -1,10 +1 @@/* SPDX-License-Identifier: GPL-2.0 */ -#ifndef ARCH__X86__MM__KMEMCHECK__OPCODE_H -#define ARCH__X86__MM__KMEMCHECK__OPCODE_H - -#include <linux/types.h> - -void kmemcheck_opcode_decode (const uint8_t *op,unsigned int *size); -const uint8_t *kmemcheck_opcode_get_primary (const uint8_t *op); - -#endif
arch/x86/mm/kmemcheck/pte.c +0 -22
@@ -1,23 +1 @@// SPDX-License-Identifier: GPL-2.0 -#include <linux/mm.h> - -#include <asm/pgtable.h> - -#include "pte.h" - -pte_t *kmemcheck_pte_lookup (unsigned long address) -{ -pte_t *pte; -unsigned int level; - - pte =lookup_address (address, &level); -if (!pte) -return NULL ; -if (level !=PG_LEVEL_4K ) -return NULL ; -if (!pte_hidden (*pte)) -return NULL ; - -return pte; -} -
arch/x86/mm/kmemcheck/pte.h +0 -10
@@ -1,11 +1 @@/* SPDX-License-Identifier: GPL-2.0 */ -#ifndef ARCH__X86__MM__KMEMCHECK__PTE_H -#define ARCH__X86__MM__KMEMCHECK__PTE_H - -#include <linux/mm.h> - -#include <asm/pgtable.h> - -pte_t *kmemcheck_pte_lookup (unsigned long address); - -#endif
arch/x86/mm/kmemcheck/selftest.c +0 -70
71 lines not on this page · raw message
arch/x86/mm/kmemcheck/selftest.h +0 -6
@@ -1,7 +1 @@/* SPDX-License-Identifier: GPL-2.0 */ -#ifndef ARCH_X86_MM_KMEMCHECK_SELFTEST_H -#define ARCH_X86_MM_KMEMCHECK_SELFTEST_H - -bool kmemcheck_selftest (void ); - -#endif
arch/x86/mm/kmemcheck/shadow.c deleted +0 -173
173 lines not on this page · raw message
arch/x86/mm/kmemcheck/shadow.h +0 -18
@@ -1,19 +1 @@/* SPDX-License-Identifier: GPL-2.0 */ -#ifndef ARCH__X86__MM__KMEMCHECK__SHADOW_H -#define ARCH__X86__MM__KMEMCHECK__SHADOW_H - -enum kmemcheck_shadow { -KMEMCHECK_SHADOW_UNALLOCATED , -KMEMCHECK_SHADOW_UNINITIALIZED , -KMEMCHECK_SHADOW_INITIALIZED , -KMEMCHECK_SHADOW_FREED , -}; - -void *kmemcheck_shadow_lookup (unsigned long address); - -enum kmemcheck_shadow kmemcheck_shadow_test (void *shadow,unsigned int size); -enum kmemcheck_shadow kmemcheck_shadow_test_all (void *shadow, -unsigned int size); -void kmemcheck_shadow_set (void *shadow,unsigned int size); - -#endif
include/linux/interrupt.h +0 -15
@@ -594,21 +594,6 @@ static inline void tasklet_hi_schedule(s__tasklet_hi_schedule (t); } -extern void __tasklet_hi_schedule_first (struct tasklet_struct *t); - -/* -* This version avoids touching any other tasklets. Needed for kmemcheck -* in order not to take any page faults while enqueueing this tasklet; -* consider VERY carefully whether you really need this or -* tasklet_hi_schedule()... -*/ -static inline void tasklet_hi_schedule_first (struct tasklet_struct *t) -{ -if (!test_and_set_bit (TASKLET_STATE_SCHED , &t->state)) -__tasklet_hi_schedule_first (t); -} - -static inline void tasklet_disable_nosync (struct tasklet_struct *t) {atomic_inc (&t->count);
include/linux/kmemcheck.h +0 -171
172 lines not on this page · raw message
kernel/softirq.c +0 -10
@@ -486,16 +486,6 @@ void __tasklet_hi_schedule(struct taskle }EXPORT_SYMBOL (__tasklet_hi_schedule); -void __tasklet_hi_schedule_first (struct tasklet_struct *t) -{ -BUG_ON (!irqs_disabled ()); - - t->next =__this_cpu_read (tasklet_hi_vec.head); -__this_cpu_write (tasklet_hi_vec.head, t); -__raise_softirq_irqoff (HI_SOFTIRQ ); -} -EXPORT_SYMBOL (__tasklet_hi_schedule_first); - static __latent_entropy void tasklet_action(struct softirq_action *a) {struct tasklet_struct *list;
kernel/sysctl.c +0 -10
@@ -30,7 +30,6 @@#include <linux/proc_fs.h> #include <linux/security.h> #include <linux/ctype.h> -#include <linux/kmemcheck.h> #include <linux/kmemleak.h> #include <linux/fs.h> #include <linux/init.h>
@@ -1174,15 +1173,6 @@ static struct ctl_table kern_table[] = { .extra2 = &one_thousand, },#endif -#ifdef CONFIG_KMEMCHECK - { - .procname = "kmemcheck", - .data = &kmemcheck_enabled, - .maxlen = sizeof(int), - .mode = 0644, - .proc_handler = proc_dointvec, - }, -#endif { .procname = "panic_on_warn", .data = &panic_on_warn,
lib/Kconfig.debug +2 -4
@@ -504,7 +504,7 @@ config DEBUG_OBJECTS_ENABLE_DEFAULT config DEBUG_SLAB bool "Debug slab memory allocations" - depends on DEBUG_KERNEL && SLAB && !KMEMCHECK + depends on DEBUG_KERNEL && SLAB help Say Y here to have the kernel do limited verification on memory allocation as well as poisoning memory on free to catch use of freed
@@ -516,7 +516,7 @@ config DEBUG_SLAB_LEAK config SLUB_DEBUG_ON bool "SLUB debugging on by default" - depends on SLUB && SLUB_DEBUG && !KMEMCHECK + depends on SLUB && SLUB_DEBUG default n help Boot with debugging on by default. SLUB boots by default with
@@ -730,8 +730,6 @@ config DEBUG_STACKOVERFLOW If in doubt, say "N". -source "lib/Kconfig.kmemcheck" - source "lib/Kconfig.kasan" endmenu # "Memory Debugging"
lib/Kconfig.kmemcheck deleted +0 -94
94 lines not on this page · raw message
mm/Kconfig.debug +0 -1
@@ -11,7 +11,6 @@ config DEBUG_PAGEALLOC bool "Debug page memory allocations" depends on DEBUG_KERNEL depends on !HIBERNATION || ARCH_SUPPORTS_DEBUG_PAGEALLOC && !PPC && !SPARC - depends on !KMEMCHECK select PAGE_EXTENSION select PAGE_POISONING if !ARCH_SUPPORTS_DEBUG_PAGEALLOC ---help---
mm/Makefile +0 -2
@@ -17,7 +17,6 @@ KCOV_INSTRUMENT_slub.o := n KCOV_INSTRUMENT_page_alloc.o := n KCOV_INSTRUMENT_debug-pagealloc.o := n KCOV_INSTRUMENT_kmemleak.o := n -KCOV_INSTRUMENT_kmemcheck.o := n KCOV_INSTRUMENT_memcontrol.o := n KCOV_INSTRUMENT_mmzone.o := n KCOV_INSTRUMENT_vmstat.o := n
@@ -70,7 +69,6 @@ obj-$(CONFIG_KSM) += ksm.o obj-$(CONFIG_PAGE_POISONING) += page_poison.o obj-$(CONFIG_SLAB) += slab.o obj-$(CONFIG_SLUB) += slub.o -obj-$(CONFIG_KMEMCHECK) += kmemcheck.o obj-$(CONFIG_KASAN) += kasan/ obj-$(CONFIG_FAILSLAB) += failslab.o obj-$(CONFIG_MEMORY_HOTPLUG) += memory_hotplug.o
mm/kmemcheck.c +0 -125
126 lines not on this page · raw message
mm/slub.c +2 -3
@@ -1369,7 +1369,7 @@ static inline void *slab_free_hook(struc* So in order to make the debug calls that expect irqs to be * disabled we need to disable interrupts temporarily. */ -#if defined(CONFIG_KMEMCHECK ) || defined(CONFIG_LOCKDEP ) +#ifdef CONFIG_LOCKDEP {unsigned long flags;
@@ -1397,8 +1397,7 @@ static inline void slab_free_freelist_ho* Compiler cannot detect this function can be removed if slab_free_hook() * evaluates to nothing. Thus, catch all relevant config debug options here. */ -#if defined(CONFIG_KMEMCHECK ) || \ - defined(CONFIG_LOCKDEP ) || \ +#if defined(CONFIG_LOCKDEP ) || \ defined(CONFIG_DEBUG_KMEMLEAK ) || \ defined(CONFIG_DEBUG_OBJECTS_FREE ) || \ defined(CONFIG_KASAN )
scripts/kernel-doc +0 -2
@@ -2182,8 +2182,6 @@ sub dump_struct($$) { # strip comments: $members =~ s/\/\*.*?\*\///gos; $nested =~ s/\/\*.*?\*\///gos; - # strip kmemcheck_bitfield_{begin,end}.*; - $members =~ s/kmemcheck_bitfield_.*?;//gos; # strip attributes $members =~ s/__attribute__\s*\(\([a-z,_\*\s\(\)]*\)\)//i; $members =~ s/__aligned\s*\([^;]*\)//gos;
tools/include/linux/kmemcheck.h +0 -8
@@ -1,9 +1 @@/* SPDX-License-Identifier: GPL-2.0 */ -#ifndef _LIBLOCKDEP_LINUX_KMEMCHECK_H_ -#define _LIBLOCKDEP_LINUX_KMEMCHECK_H_ - -static inline void kmemcheck_mark_initialized (void *address,unsigned int n) -{ -} - -#endif
Patches currently in stable-queue which might be from [email protected] are
queue-4.14/kmemcheck-remove-annotations.patch queue-4.14/kmemcheck-remove-whats-left-of-notrack-flags.patch queue-4.14/kmemcheck-stop-using-gfp_notrack-and-slab_notrack.patch queue-4.14/kmemcheck-rip-it-out.patch