Re: [PATCH] mm: kill kmemcheck again

From: Michal Hocko
Date: Wed Sep 27 2017 - 11:02:17 EST


On Wed 27-09-17 11:27:40, Sasha Levin wrote:
> 2 Years ago I proposed to kill kmemcheck:
>
> > As discussed on LSF/MM, kill kmemcheck.
> >
> > KASan is a replacement that is able to work without the limitation of
> > kmemcheck (single CPU, slow). KASan is already upstream.
> >
> > We are also not aware of any users of kmemcheck (or users who don't consider
> > KASan as a suitable replacement).
>
> The only objection was that since KASAN wasn't supported by all GCC
> versions provided by distros at that time we should hold off for 2
> years, and try again.
>
> Now that 2 years have passed, and all distros provide gcc that supports
> KASAN, kill kmemcheck again for the very same reasons.

This is just too large to review manually. How have you generated the
patch?

My compile test batery failed for i386 allyesconfig for some reason
which is not entirely clear to me (see attached). I have applied on top
of dc972a67cc54585bd83ad811c4e9b6ab3dcd427e and that one compiles fine.

> Cc: Steven Rostedt (VMware) <rostedt@xxxxxxxxxxx>
> Cc: David S. Miller <davem@xxxxxxxxxxxxx>
> Signed-off-by: Sasha Levin <alexander.levin@xxxxxxxxxxx>

Anyway I fully support this removal. It is a lot of rarely used code and
KASAN is much more usable.
--
Michal Hocko
SUSE Labs
=== Config allyesconfig
drivers/clk/renesas/clk-sh73a0.c: In function 'sh73a0_cpg_clocks_init':
drivers/clk/renesas/clk-sh73a0.c:155:3: warning: 'parent_name' may be used uninitialized in this function [-Wmaybe-uninitialized]
return clk_register_fixed_factor(NULL, name, parent_name, 0,
^
drivers/clk/renesas/clk-sh73a0.c:82:14: note: 'parent_name' was declared here
const char *parent_name;
^
In file included from ./arch/x86/include/asm/xor_32.h:544:0,
from ./arch/x86/include/asm/xor.h:489,
from crypto/xor.c:25:
./include/asm-generic/xor.h:19:1: error: redefinition of 'xor_8regs_2'
xor_8regs_2(unsigned long bytes, unsigned long *p1, unsigned long *p2)
^
In file included from ./arch/x86/include/asm/xor.h:1:0,
from crypto/xor.c:25:
./include/asm-generic/xor.h:19:1: note: previous definition of 'xor_8regs_2' was here
xor_8regs_2(unsigned long bytes, unsigned long *p1, unsigned long *p2)
^
In file included from ./arch/x86/include/asm/xor_32.h:544:0,
from ./arch/x86/include/asm/xor.h:489,
from crypto/xor.c:25:
./include/asm-generic/xor.h:38:1: error: redefinition of 'xor_8regs_3'
xor_8regs_3(unsigned long bytes, unsigned long *p1, unsigned long *p2,
^
In file included from ./arch/x86/include/asm/xor.h:1:0,
from crypto/xor.c:25:
./include/asm-generic/xor.h:38:1: note: previous definition of 'xor_8regs_3' was here
xor_8regs_3(unsigned long bytes, unsigned long *p1, unsigned long *p2,
^
In file included from ./arch/x86/include/asm/xor_32.h:544:0,
from ./arch/x86/include/asm/xor.h:489,
from crypto/xor.c:25:
./include/asm-generic/xor.h:59:1: error: redefinition of 'xor_8regs_4'
xor_8regs_4(unsigned long bytes, unsigned long *p1, unsigned long *p2,
^
In file included from ./arch/x86/include/asm/xor.h:1:0,
from crypto/xor.c:25:
./include/asm-generic/xor.h:59:1: note: previous definition of 'xor_8regs_4' was here
xor_8regs_4(unsigned long bytes, unsigned long *p1, unsigned long *p2,
^
In file included from ./arch/x86/include/asm/xor_32.h:544:0,
from ./arch/x86/include/asm/xor.h:489,
from crypto/xor.c:25:
./include/asm-generic/xor.h:81:1: error: redefinition of 'xor_8regs_5'
xor_8regs_5(unsigned long bytes, unsigned long *p1, unsigned long *p2,
^
In file included from ./arch/x86/include/asm/xor.h:1:0,
from crypto/xor.c:25:
./include/asm-generic/xor.h:81:1: note: previous definition of 'xor_8regs_5' was here
xor_8regs_5(unsigned long bytes, unsigned long *p1, unsigned long *p2,
^
In file included from ./arch/x86/include/asm/xor_32.h:544:0,
from ./arch/x86/include/asm/xor.h:489,
from crypto/xor.c:25:
./include/asm-generic/xor.h:104:1: error: redefinition of 'xor_32regs_2'
xor_32regs_2(unsigned long bytes, unsigned long *p1, unsigned long *p2)
^
In file included from ./arch/x86/include/asm/xor.h:1:0,
from crypto/xor.c:25:
./include/asm-generic/xor.h:104:1: note: previous definition of 'xor_32regs_2' was here
xor_32regs_2(unsigned long bytes, unsigned long *p1, unsigned long *p2)
^
In file included from ./arch/x86/include/asm/xor_32.h:544:0,
from ./arch/x86/include/asm/xor.h:489,
from crypto/xor.c:25:
./include/asm-generic/xor.h:140:1: error: redefinition of 'xor_32regs_3'
xor_32regs_3(unsigned long bytes, unsigned long *p1, unsigned long *p2,
^
In file included from ./arch/x86/include/asm/xor.h:1:0,
from crypto/xor.c:25:
./include/asm-generic/xor.h:140:1: note: previous definition of 'xor_32regs_3' was here
xor_32regs_3(unsigned long bytes, unsigned long *p1, unsigned long *p2,
^
In file included from ./arch/x86/include/asm/xor_32.h:544:0,
from ./arch/x86/include/asm/xor.h:489,
from crypto/xor.c:25:
./include/asm-generic/xor.h:186:1: error: redefinition of 'xor_32regs_4'
xor_32regs_4(unsigned long bytes, unsigned long *p1, unsigned long *p2,
^
In file included from ./arch/x86/include/asm/xor.h:1:0,
from crypto/xor.c:25:
./include/asm-generic/xor.h:186:1: note: previous definition of 'xor_32regs_4' was here
xor_32regs_4(unsigned long bytes, unsigned long *p1, unsigned long *p2,
^
In file included from ./arch/x86/include/asm/xor_32.h:544:0,
from ./arch/x86/include/asm/xor.h:489,
from crypto/xor.c:25:
./include/asm-generic/xor.h:241:1: error: redefinition of 'xor_32regs_5'
xor_32regs_5(unsigned long bytes, unsigned long *p1, unsigned long *p2,
^
In file included from ./arch/x86/include/asm/xor.h:1:0,
from crypto/xor.c:25:
./include/asm-generic/xor.h:241:1: note: previous definition of 'xor_32regs_5' was here
xor_32regs_5(unsigned long bytes, unsigned long *p1, unsigned long *p2,
^
In file included from ./arch/x86/include/asm/xor_32.h:544:0,
from ./arch/x86/include/asm/xor.h:489,
from crypto/xor.c:25:
./include/asm-generic/xor.h:305:1: error: redefinition of 'xor_8regs_p_2'
xor_8regs_p_2(unsigned long bytes, unsigned long *p1, unsigned long *p2)
^
In file included from ./arch/x86/include/asm/xor.h:1:0,
from crypto/xor.c:25:
./include/asm-generic/xor.h:305:1: note: previous definition of 'xor_8regs_p_2' was here
xor_8regs_p_2(unsigned long bytes, unsigned long *p1, unsigned long *p2)
^
In file included from ./arch/x86/include/asm/xor_32.h:544:0,
from ./arch/x86/include/asm/xor.h:489,
from crypto/xor.c:25:
./include/asm-generic/xor.h:331:1: error: redefinition of 'xor_8regs_p_3'
xor_8regs_p_3(unsigned long bytes, unsigned long *p1, unsigned long *p2,
^
In file included from ./arch/x86/include/asm/xor.h:1:0,
from crypto/xor.c:25:
./include/asm-generic/xor.h:331:1: note: previous definition of 'xor_8regs_p_3' was here
xor_8regs_p_3(unsigned long bytes, unsigned long *p1, unsigned long *p2,
^
In file included from ./arch/x86/include/asm/xor_32.h:544:0,
from ./arch/x86/include/asm/xor.h:489,
from crypto/xor.c:25:
./include/asm-generic/xor.h:361:1: error: redefinition of 'xor_8regs_p_4'
xor_8regs_p_4(unsigned long bytes, unsigned long *p1, unsigned long *p2,
^
In file included from ./arch/x86/include/asm/xor.h:1:0,
from crypto/xor.c:25:
./include/asm-generic/xor.h:361:1: note: previous definition of 'xor_8regs_p_4' was here
xor_8regs_p_4(unsigned long bytes, unsigned long *p1, unsigned long *p2,
^
In file included from ./arch/x86/include/asm/xor_32.h:544:0,
from ./arch/x86/include/asm/xor.h:489,
from crypto/xor.c:25:
./include/asm-generic/xor.h:395:1: error: redefinition of 'xor_8regs_p_5'
xor_8regs_p_5(unsigned long bytes, unsigned long *p1, unsigned long *p2,
^
In file included from ./arch/x86/include/asm/xor.h:1:0,
from crypto/xor.c:25:
./include/asm-generic/xor.h:395:1: note: previous definition of 'xor_8regs_p_5' was here
xor_8regs_p_5(unsigned long bytes, unsigned long *p1, unsigned long *p2,
^
In file included from ./arch/x86/include/asm/xor_32.h:544:0,
from ./arch/x86/include/asm/xor.h:489,
from crypto/xor.c:25:
./include/asm-generic/xor.h:432:1: error: redefinition of 'xor_32regs_p_2'
xor_32regs_p_2(unsigned long bytes, unsigned long *p1, unsigned long *p2)
^
In file included from ./arch/x86/include/asm/xor.h:1:0,
from crypto/xor.c:25:
./include/asm-generic/xor.h:432:1: note: previous definition of 'xor_32regs_p_2' was here
xor_32regs_p_2(unsigned long bytes, unsigned long *p1, unsigned long *p2)
^
In file included from ./arch/x86/include/asm/xor_32.h:544:0,
from ./arch/x86/include/asm/xor.h:489,
from crypto/xor.c:25:
./include/asm-generic/xor.h:477:1: error: redefinition of 'xor_32regs_p_3'
xor_32regs_p_3(unsigned long bytes, unsigned long *p1, unsigned long *p2,
^
In file included from ./arch/x86/include/asm/xor.h:1:0,
from crypto/xor.c:25:
./include/asm-generic/xor.h:477:1: note: previous definition of 'xor_32regs_p_3' was here
xor_32regs_p_3(unsigned long bytes, unsigned long *p1, unsigned long *p2,
^
In file included from ./arch/x86/include/asm/xor_32.h:544:0,
from ./arch/x86/include/asm/xor.h:489,
from crypto/xor.c:25:
./include/asm-generic/xor.h:534:1: error: redefinition of 'xor_32regs_p_4'
xor_32regs_p_4(unsigned long bytes, unsigned long *p1, unsigned long *p2,
^
In file included from ./arch/x86/include/asm/xor.h:1:0,
from crypto/xor.c:25:
./include/asm-generic/xor.h:534:1: note: previous definition of 'xor_32regs_p_4' was here
xor_32regs_p_4(unsigned long bytes, unsigned long *p1, unsigned long *p2,
^
In file included from ./arch/x86/include/asm/xor_32.h:544:0,
from ./arch/x86/include/asm/xor.h:489,
from crypto/xor.c:25:
./include/asm-generic/xor.h:602:1: error: redefinition of 'xor_32regs_p_5'
xor_32regs_p_5(unsigned long bytes, unsigned long *p1, unsigned long *p2,
^
In file included from ./arch/x86/include/asm/xor.h:1:0,
from crypto/xor.c:25:
./include/asm-generic/xor.h:602:1: note: previous definition of 'xor_32regs_p_5' was here
xor_32regs_p_5(unsigned long bytes, unsigned long *p1, unsigned long *p2,
^
In file included from ./arch/x86/include/asm/xor_32.h:544:0,
from ./arch/x86/include/asm/xor.h:489,
from crypto/xor.c:25:
./include/asm-generic/xor.h:680:34: error: redefinition of 'xor_block_8regs'
static struct xor_block_template xor_block_8regs = {
^
In file included from ./arch/x86/include/asm/xor.h:1:0,
from crypto/xor.c:25:
./include/asm-generic/xor.h:680:34: note: previous definition of 'xor_block_8regs' was here
static struct xor_block_template xor_block_8regs = {
^
In file included from ./arch/x86/include/asm/xor_32.h:544:0,
from ./arch/x86/include/asm/xor.h:489,
from crypto/xor.c:25:
./include/asm-generic/xor.h:688:34: error: redefinition of 'xor_block_32regs'
static struct xor_block_template xor_block_32regs = {
^
In file included from ./arch/x86/include/asm/xor.h:1:0,
from crypto/xor.c:25:
./include/asm-generic/xor.h:688:34: note: previous definition of 'xor_block_32regs' was here
static struct xor_block_template xor_block_32regs = {
^
In file included from ./arch/x86/include/asm/xor_32.h:544:0,
from ./arch/x86/include/asm/xor.h:489,
from crypto/xor.c:25:
./include/asm-generic/xor.h:696:34: error: redefinition of 'xor_block_8regs_p'
static struct xor_block_template xor_block_8regs_p __maybe_unused = {
^
In file included from ./arch/x86/include/asm/xor.h:1:0,
from crypto/xor.c:25:
./include/asm-generic/xor.h:696:34: note: previous definition of 'xor_block_8regs_p' was here
static struct xor_block_template xor_block_8regs_p __maybe_unused = {
^
In file included from ./arch/x86/include/asm/xor_32.h:544:0,
from ./arch/x86/include/asm/xor.h:489,
from crypto/xor.c:25:
./include/asm-generic/xor.h:704:34: error: redefinition of 'xor_block_32regs_p'
static struct xor_block_template xor_block_32regs_p __maybe_unused = {
^
In file included from ./arch/x86/include/asm/xor.h:1:0,
from crypto/xor.c:25:
./include/asm-generic/xor.h:704:34: note: previous definition of 'xor_block_32regs_p' was here
static struct xor_block_template xor_block_32regs_p __maybe_unused = {
^
./include/asm-generic/xor.h:680:34: warning: 'xor_block_8regs' defined but not used [-Wunused-variable]
static struct xor_block_template xor_block_8regs = {
^
./include/asm-generic/xor.h:688:34: warning: 'xor_block_32regs' defined but not used [-Wunused-variable]
static struct xor_block_template xor_block_32regs = {
^
make[1]: *** [crypto/xor.o] Error 1
make[1]: *** Waiting for unfinished jobs....
lib/raid6/recov_avx512.c:387:2: warning: #warning "your version of binutils lacks AVX512 support" [-Wcpp]
#warning "your version of binutils lacks AVX512 support"
^
make: *** [crypto] Error 2
make: *** Waiting for unfinished jobs....
drivers/net/ieee802154/ca8210.c: In function 'ca8210_skb_tx':
drivers/net/ieee802154/ca8210.c:1947:9: warning: missing braces around initializer [-Wmissing-braces]
struct ieee802154_hdr header = { 0 };
^
drivers/net/ieee802154/ca8210.c:1947:9: warning: (near initialization for 'header.fc') [-Wmissing-braces]