# git rev-parse -q --verify 706a1ea65e6faaf853427a0e931f59d604dd45e3^{commit} # git fetch -q -n -f git://fs.ozlabs.ibm.com/kernel/linus master # git rev-parse -q --verify 706a1ea65e6faaf853427a0e931f59d604dd45e3^{commit} 706a1ea65e6faaf853427a0e931f59d604dd45e3 # git checkout -q -f -B kisskb 706a1ea65e6faaf853427a0e931f59d604dd45e3 # git clean -qxdf # < git log -1 # commit 706a1ea65e6faaf853427a0e931f59d604dd45e3 # Merge: d40acad 48a8b97 # Author: Linus Torvalds # Date: Thu Aug 23 14:55:01 2018 -0700 # # Merge branch 'tlb-fixes' # # Merge fixes for missing TLB shootdowns. # # This fixes a couple of cases that involved us possibly freeing page # table structures before the required TLB shootdown had been done. # # There are a few cleanup patches to make the code easier to follow, and # to avoid some of the more problematic cases entirely when not necessary. # # To make this easier for backports, it undoes the recent lazy TLB # patches, because the cleanups and fixes are more important, and Rik is # ok with re-doing them later when things have calmed down. # # The missing TLB flush was only delayed, and the wrong ordering only # happened under memory pressure (and in theory under a couple of other # fairly theoretical situations), so this may have been all very unlikely # to have hit people in practice. # # But getting the TLB shootdown wrong is _so_ hard to debug and see that I # consider this a crticial fix. # # Many thanks to Jann Horn for having debugged this. # # * tlb-fixes: # x86/mm: Only use tlb_remove_table() for paravirt # mm: mmu_notifier fix for tlb_end_vma # mm/tlb, x86/mm: Support invalidating TLB caches for RCU_TABLE_FREE # mm/tlb: Remove tlb_remove_table() non-concurrent condition # mm: move tlb_table_flush to tlb_flush_mmu_free # x86/mm/tlb: Revert the recent lazy TLB patches # < /opt/cross/kisskb/korg/gcc-8.1.0-nolibc/aarch64-linux/bin/aarch64-linux-gcc --version # < git log --format=%s --max-count=1 706a1ea65e6faaf853427a0e931f59d604dd45e3 # < make -s -j 10 ARCH=arm64 O=/kisskb/build/linus-rand_arm64-randconfig_arm64-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/aarch64-linux/bin/aarch64-linux- randconfig KCONFIG_SEED=0x1229C958 # Added to kconfig CONFIG_PREVENT_FIRMWARE_BUILD=y # yes \n | make -s -j 10 ARCH=arm64 O=/kisskb/build/linus-rand_arm64-randconfig_arm64-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/aarch64-linux/bin/aarch64-linux- oldconfig yes: standard output: Broken pipe yes: write error # make -s -j 10 ARCH=arm64 O=/kisskb/build/linus-rand_arm64-randconfig_arm64-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/aarch64-linux/bin/aarch64-linux- In file included from /kisskb/src/arch/arm64/include/asm/tlb.h:36, from /kisskb/src/arch/arm64/mm/init.c:53: /kisskb/src/include/asm-generic/tlb.h: In function 'tlb_flush_mmu_tlbonly': /kisskb/src/include/asm-generic/tlb.h:147:2: error: implicit declaration of function 'tlb_flush'; did you mean 'tlb_flush_mmu'? [-Werror=implicit-function-declaration] tlb_flush(tlb); ^~~~~~~~~ tlb_flush_mmu In file included from /kisskb/src/arch/arm64/mm/init.c:53: /kisskb/src/arch/arm64/include/asm/tlb.h: At top level: /kisskb/src/arch/arm64/include/asm/tlb.h:38:20: warning: conflicting types for 'tlb_flush' static inline void tlb_flush(struct mmu_gather *tlb) ^~~~~~~~~ /kisskb/src/arch/arm64/include/asm/tlb.h:38:20: error: static declaration of 'tlb_flush' follows non-static declaration In file included from /kisskb/src/arch/arm64/include/asm/tlb.h:36, from /kisskb/src/arch/arm64/mm/init.c:53: /kisskb/src/include/asm-generic/tlb.h:147:2: note: previous implicit declaration of 'tlb_flush' was here tlb_flush(tlb); ^~~~~~~~~ cc1: some warnings being treated as errors /kisskb/src/scripts/Makefile.build:307: recipe for target 'arch/arm64/mm/init.o' failed make[2]: *** [arch/arm64/mm/init.o] Error 1 make[2]: *** Waiting for unfinished jobs.... /kisskb/src/Makefile:1057: recipe for target 'arch/arm64/mm' failed make[1]: *** [arch/arm64/mm] Error 2 make[1]: *** Waiting for unfinished jobs.... In file included from /kisskb/src/arch/arm64/include/asm/tlb.h:36, from /kisskb/src/kernel/sched/sched.h:67, from /kisskb/src/kernel/sched/core.c:8: /kisskb/src/include/asm-generic/tlb.h: In function 'tlb_flush_mmu_tlbonly': /kisskb/src/include/asm-generic/tlb.h:147:2: error: implicit declaration of function 'tlb_flush'; did you mean 'dax_flush'? [-Werror=implicit-function-declaration] tlb_flush(tlb); ^~~~~~~~~ dax_flush In file included from /kisskb/src/kernel/sched/sched.h:67, from /kisskb/src/kernel/sched/core.c:8: /kisskb/src/arch/arm64/include/asm/tlb.h: At top level: /kisskb/src/arch/arm64/include/asm/tlb.h:38:20: warning: conflicting types for 'tlb_flush' static inline void tlb_flush(struct mmu_gather *tlb) ^~~~~~~~~ /kisskb/src/arch/arm64/include/asm/tlb.h:38:20: error: static declaration of 'tlb_flush' follows non-static declaration In file included from /kisskb/src/arch/arm64/include/asm/tlb.h:36, from /kisskb/src/kernel/sched/sched.h:67, from /kisskb/src/kernel/sched/core.c:8: /kisskb/src/include/asm-generic/tlb.h:147:2: note: previous implicit declaration of 'tlb_flush' was here tlb_flush(tlb); ^~~~~~~~~ In file included from /kisskb/src/arch/arm64/include/asm/tlb.h:36, from /kisskb/src/kernel/sched/sched.h:67, from /kisskb/src/kernel/sched/loadavg.c:9: /kisskb/src/include/asm-generic/tlb.h: In function 'tlb_flush_mmu_tlbonly': /kisskb/src/include/asm-generic/tlb.h:147:2: error: implicit declaration of function 'tlb_flush'; did you mean 'dax_flush'? [-Werror=implicit-function-declaration] tlb_flush(tlb); ^~~~~~~~~ dax_flush In file included from /kisskb/src/kernel/sched/sched.h:67, from /kisskb/src/kernel/sched/loadavg.c:9: /kisskb/src/arch/arm64/include/asm/tlb.h: At top level: /kisskb/src/arch/arm64/include/asm/tlb.h:38:20: warning: conflicting types for 'tlb_flush' static inline void tlb_flush(struct mmu_gather *tlb) ^~~~~~~~~ /kisskb/src/arch/arm64/include/asm/tlb.h:38:20: error: static declaration of 'tlb_flush' follows non-static declaration In file included from /kisskb/src/arch/arm64/include/asm/tlb.h:36, from /kisskb/src/kernel/sched/sched.h:67, from /kisskb/src/kernel/sched/loadavg.c:9: /kisskb/src/include/asm-generic/tlb.h:147:2: note: previous implicit declaration of 'tlb_flush' was here tlb_flush(tlb); ^~~~~~~~~ cc1: some warnings being treated as errors /kisskb/src/scripts/Makefile.build:307: recipe for target 'kernel/sched/loadavg.o' failed make[3]: *** [kernel/sched/loadavg.o] Error 1 make[3]: *** Waiting for unfinished jobs.... In file included from /kisskb/src/include/trace/define_trace.h:97, from /kisskb/src/include/trace/events/rcu.h:790, from /kisskb/src/kernel/rcu/rcu.h:26, from /kisskb/src/kernel/rcu/update.c:58: /kisskb/src/include/trace/events/rcu.h: In function 'perf_trace_rcu_torture_read': /kisskb/src/include/trace/events/rcu.h:693:3: warning: 'strncpy' specified bound 8 equals destination size [-Wstringop-truncation] strncpy(__entry->rcutorturename, rcutorturename, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RCUTORTURENAME_LEN); ~~~~~~~~~~~~~~~~~~~ /kisskb/src/include/trace/perf.h:66:4: note: in definition of macro 'DECLARE_EVENT_CLASS' { assign; } \ ^~~~~~ /kisskb/src/include/trace/trace_events.h:78:9: note: in expansion of macro 'PARAMS' PARAMS(assign), \ ^~~~~~ /kisskb/src/include/trace/events/rcu.h:677:1: note: in expansion of macro 'TRACE_EVENT' TRACE_EVENT(rcu_torture_read, ^~~~~~~~~~~ /kisskb/src/include/trace/events/rcu.h:692:2: note: in expansion of macro 'TP_fast_assign' TP_fast_assign( ^~~~~~~~~~~~~~ In file included from /kisskb/src/include/trace/define_trace.h:96, from /kisskb/src/include/trace/events/rcu.h:790, from /kisskb/src/kernel/rcu/rcu.h:26, from /kisskb/src/kernel/rcu/update.c:58: /kisskb/src/include/trace/events/rcu.h: In function 'trace_event_raw_event_rcu_torture_read': /kisskb/src/include/trace/events/rcu.h:693:3: warning: 'strncpy' specified bound 8 equals destination size [-Wstringop-truncation] strncpy(__entry->rcutorturename, rcutorturename, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RCUTORTURENAME_LEN); ~~~~~~~~~~~~~~~~~~~ /kisskb/src/include/trace/trace_events.h:720:4: note: in definition of macro 'DECLARE_EVENT_CLASS' { assign; } \ ^~~~~~ /kisskb/src/include/trace/trace_events.h:78:9: note: in expansion of macro 'PARAMS' PARAMS(assign), \ ^~~~~~ /kisskb/src/include/trace/events/rcu.h:677:1: note: in expansion of macro 'TRACE_EVENT' TRACE_EVENT(rcu_torture_read, ^~~~~~~~~~~ /kisskb/src/include/trace/events/rcu.h:692:2: note: in expansion of macro 'TP_fast_assign' TP_fast_assign( ^~~~~~~~~~~~~~ cc1: some warnings being treated as errors /kisskb/src/scripts/Makefile.build:307: recipe for target 'kernel/sched/core.o' failed make[3]: *** [kernel/sched/core.o] Error 1 /kisskb/src/scripts/Makefile.build:548: recipe for target 'kernel/sched' failed make[2]: *** [kernel/sched] Error 2 make[2]: *** Waiting for unfinished jobs.... /kisskb/src/Makefile:1057: recipe for target 'kernel' failed make[1]: *** [kernel] Error 2 Makefile:146: recipe for target 'sub-make' failed make: *** [sub-make] Error 2 Command 'make -s -j 10 ARCH=arm64 O=/kisskb/build/linus-rand_arm64-randconfig_arm64-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/aarch64-linux/bin/aarch64-linux- ' returned non-zero exit status 2 # rm -rf /kisskb/build/linus-rand_arm64-randconfig_arm64-gcc8 # Build took: 0:00:25.539260