Re: 94d3a25408: kernel_BUG_at_kernel/fork.c

2018-03-12 Thread Mark Rutland
On Sat, Mar 10, 2018 at 05:11:39AM +0800, kernel test robot wrote:
> FYI, we noticed the following commit (built with gcc-7):
> 
> commit: 94d3a254089a7cd4f11b7071b4323afd98eea0a6 ("Detect early free of a 
> live mm")
> url: 
> https://github.com/0day-ci/linux/commits/Mark-Rutland/Detect-early-free-of-a-live-mm/20180303-144149

> [   47.208935] kernel BUG at kernel/fork.c:599!
> [   47.210365] invalid opcode:  [#1] SMP PTI
> [   47.211336] Modules linked in:
> [   47.212145] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 
> 4.16.0-rc3-1-g94d3a25 #1
> [   47.213966] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 
> 1.10.2-1 04/01/2014
> [   47.215869] RIP: 0010:__mmdrop+0x136/0x170
> [   47.216866] RSP: 0018:82803dd8 EFLAGS: 00010293
> [   47.218160] RAX: 82818500 RBX: 88011577 RCX: 
> 810ae876
> [   47.219758] RDX:  RSI: 0001 RDI: 
> 88011577
> [   47.221306] RBP: 82803e00 R08: 0001 R09: 
> 
> [   47.223268] R10:  R11:  R12: 
> 82818500
> [   47.224961] R13: 82a8ce20 R14: 88013ff534c0 R15: 
> 03e7
> [   47.226716] FS:  () GS:88013b20() 
> knlGS:
> [   47.228550] CS:  0010 DS:  ES:  CR0: 80050033
> [   47.229884] CR2: 7fbfc2cc0190 CR3: 02812000 CR4: 
> 06f0
> [   47.231580] Call Trace:
> [   47.232144]  idle_task_exit+0x53/0x60

Luckily this is a spurious warning. In idle_task_exit(), we switch to
the init_mm, but leave active_mm stale before calling mmdrop().

In addition to the WARN_ON[_ONCE] changes, I'll drop the following in:

diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index e7c535eee0a6..0ef844abc2da 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -5506,6 +5506,7 @@ void idle_task_exit(void)
 
if (mm != _mm) {
switch_mm(mm, _mm, current);
+   current->active_mm = _mm;
finish_arch_post_lock_switch();
}
mmdrop(mm);

Thanks,
Mark.


Re: 94d3a25408: kernel_BUG_at_kernel/fork.c

2018-03-12 Thread Mark Rutland
On Sat, Mar 10, 2018 at 05:11:39AM +0800, kernel test robot wrote:
> FYI, we noticed the following commit (built with gcc-7):
> 
> commit: 94d3a254089a7cd4f11b7071b4323afd98eea0a6 ("Detect early free of a 
> live mm")
> url: 
> https://github.com/0day-ci/linux/commits/Mark-Rutland/Detect-early-free-of-a-live-mm/20180303-144149

> [   47.208935] kernel BUG at kernel/fork.c:599!
> [   47.210365] invalid opcode:  [#1] SMP PTI
> [   47.211336] Modules linked in:
> [   47.212145] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 
> 4.16.0-rc3-1-g94d3a25 #1
> [   47.213966] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 
> 1.10.2-1 04/01/2014
> [   47.215869] RIP: 0010:__mmdrop+0x136/0x170
> [   47.216866] RSP: 0018:82803dd8 EFLAGS: 00010293
> [   47.218160] RAX: 82818500 RBX: 88011577 RCX: 
> 810ae876
> [   47.219758] RDX:  RSI: 0001 RDI: 
> 88011577
> [   47.221306] RBP: 82803e00 R08: 0001 R09: 
> 
> [   47.223268] R10:  R11:  R12: 
> 82818500
> [   47.224961] R13: 82a8ce20 R14: 88013ff534c0 R15: 
> 03e7
> [   47.226716] FS:  () GS:88013b20() 
> knlGS:
> [   47.228550] CS:  0010 DS:  ES:  CR0: 80050033
> [   47.229884] CR2: 7fbfc2cc0190 CR3: 02812000 CR4: 
> 06f0
> [   47.231580] Call Trace:
> [   47.232144]  idle_task_exit+0x53/0x60

Luckily this is a spurious warning. In idle_task_exit(), we switch to
the init_mm, but leave active_mm stale before calling mmdrop().

In addition to the WARN_ON[_ONCE] changes, I'll drop the following in:

diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index e7c535eee0a6..0ef844abc2da 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -5506,6 +5506,7 @@ void idle_task_exit(void)
 
if (mm != _mm) {
switch_mm(mm, _mm, current);
+   current->active_mm = _mm;
finish_arch_post_lock_switch();
}
mmdrop(mm);

Thanks,
Mark.


94d3a25408: kernel_BUG_at_kernel/fork.c

2018-03-09 Thread kernel test robot
FYI, we noticed the following commit (built with gcc-7):

commit: 94d3a254089a7cd4f11b7071b4323afd98eea0a6 ("Detect early free of a live 
mm")
url: 
https://github.com/0day-ci/linux/commits/Mark-Rutland/Detect-early-free-of-a-live-mm/20180303-144149


in testcase: boot

on test machine: qemu-system-x86_64 -enable-kvm -cpu host -smp 2 -m 4G

caused below changes (please refer to attached dmesg/kmsg for entire 
log/backtrace):


+--+---++
|  | v4.16-rc3 | 94d3a25408 |
+--+---++
| boot_successes   | 18| 6  |
| boot_failures| 0 | 10 |
| kernel_BUG_at_kernel/fork.c  | 0 | 10 |
| invalid_opcode:#[##] | 0 | 10 |
| RIP:__mmdrop | 0 | 10 |
| Kernel_panic-not_syncing:Fatal_exception | 0 | 10 |
+--+---++



[   47.208935] kernel BUG at kernel/fork.c:599!
[   47.210365] invalid opcode:  [#1] SMP PTI
[   47.211336] Modules linked in:
[   47.212145] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 
4.16.0-rc3-1-g94d3a25 #1
[   47.213966] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 
1.10.2-1 04/01/2014
[   47.215869] RIP: 0010:__mmdrop+0x136/0x170
[   47.216866] RSP: 0018:82803dd8 EFLAGS: 00010293
[   47.218160] RAX: 82818500 RBX: 88011577 RCX: 810ae876
[   47.219758] RDX:  RSI: 0001 RDI: 88011577
[   47.221306] RBP: 82803e00 R08: 0001 R09: 
[   47.223268] R10:  R11:  R12: 82818500
[   47.224961] R13: 82a8ce20 R14: 88013ff534c0 R15: 03e7
[   47.226716] FS:  () GS:88013b20() 
knlGS:
[   47.228550] CS:  0010 DS:  ES:  CR0: 80050033
[   47.229884] CR2: 7fbfc2cc0190 CR3: 02812000 CR4: 06f0
[   47.231580] Call Trace:
[   47.232144]  idle_task_exit+0x53/0x60
[   47.232947]  play_dead_common+0x9/0x20
[   47.233906]  native_play_dead+0x10/0xed
[   47.234804]  ? cpuhp_report_idle_dead+0x5a/0x70
[   47.236139]  arch_cpu_idle_dead+0xa/0x10
[   47.236954]  do_idle+0x14d/0x1d0
[   47.237834]  cpu_startup_entry+0x6e/0x70
[   47.238735]  rest_init+0xc7/0xd0
[   47.239612]  ? update_intr_gate+0x1b/0x1b
[   47.240516]  start_kernel+0x59f/0x5c2
[   47.241282]  x86_64_start_reservations+0x38/0x3a
[   47.242402]  x86_64_start_kernel+0x72/0x75
[   47.243328]  secondary_startup_64+0xa5/0xb0
[   47.244378] Code: 89 ff e8 06 32 07 00 eb 83 e8 f7 11 0d 00 4c 89 e7 e8 8f 
e7 0c 00 eb ba e8 e8 11 0d 00 0f 0b e8 e1 11 0d 00 0f 0b e8 da 11 0d 00 <0f> 0b 
e8 d3 11 0d 00 48 89 df e8 8b ed 15 00 e9 2e ff ff ff e8 
[   47.248938] RIP: __mmdrop+0x136/0x170 RSP: 82803dd8
[   47.250243] ---[ end trace 0f4bf1066c11d4ef ]---


To reproduce:

git clone https://github.com/intel/lkp-tests.git
cd lkp-tests
bin/lkp qemu -k  job-script  # job-script is attached in this 
email



Thanks,
lkp
#
# Automatically generated file; DO NOT EDIT.
# Linux/x86_64 4.16.0-rc3 Kernel Configuration
#
CONFIG_64BIT=y
CONFIG_X86_64=y
CONFIG_X86=y
CONFIG_INSTRUCTION_DECODER=y
CONFIG_OUTPUT_FORMAT="elf64-x86-64"
CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig"
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_MMU=y
CONFIG_ARCH_MMAP_RND_BITS_MIN=28
CONFIG_ARCH_MMAP_RND_BITS_MAX=32
CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8
CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16
CONFIG_NEED_DMA_MAP_STATE=y
CONFIG_NEED_SG_DMA_LENGTH=y
CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENERIC_BUG=y
CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_ARCH_HAS_CPU_RELAX=y
CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
CONFIG_HAVE_SETUP_PER_CPU_AREA=y
CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y
CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
CONFIG_ZONE_DMA32=y
CONFIG_AUDIT_ARCH=y
CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
CONFIG_X86_64_SMP=y
CONFIG_ARCH_SUPPORTS_UPROBES=y
CONFIG_FIX_EARLYCON_MEM=y
CONFIG_PGTABLE_LEVELS=4
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
CONFIG_IRQ_WORK=y
CONFIG_BUILDTIME_EXTABLE_SORT=y
CONFIG_THREAD_INFO_IN_TASK=y

#
# General setup
#
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_CROSS_COMPILE=""
# CONFIG_COMPILE_TEST is not set
CONFIG_LOCALVERSION=""
CONFIG_LOCALVERSION_AUTO=y
CONFIG_HAVE_KERNEL_GZIP=y
CONFIG_HAVE_KERNEL_BZIP2=y
CONFIG_HAVE_KERNEL_LZMA=y
CONFIG_HAVE_KERNEL_XZ=y

94d3a25408: kernel_BUG_at_kernel/fork.c

2018-03-09 Thread kernel test robot
FYI, we noticed the following commit (built with gcc-7):

commit: 94d3a254089a7cd4f11b7071b4323afd98eea0a6 ("Detect early free of a live 
mm")
url: 
https://github.com/0day-ci/linux/commits/Mark-Rutland/Detect-early-free-of-a-live-mm/20180303-144149


in testcase: boot

on test machine: qemu-system-x86_64 -enable-kvm -cpu host -smp 2 -m 4G

caused below changes (please refer to attached dmesg/kmsg for entire 
log/backtrace):


+--+---++
|  | v4.16-rc3 | 94d3a25408 |
+--+---++
| boot_successes   | 18| 6  |
| boot_failures| 0 | 10 |
| kernel_BUG_at_kernel/fork.c  | 0 | 10 |
| invalid_opcode:#[##] | 0 | 10 |
| RIP:__mmdrop | 0 | 10 |
| Kernel_panic-not_syncing:Fatal_exception | 0 | 10 |
+--+---++



[   47.208935] kernel BUG at kernel/fork.c:599!
[   47.210365] invalid opcode:  [#1] SMP PTI
[   47.211336] Modules linked in:
[   47.212145] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 
4.16.0-rc3-1-g94d3a25 #1
[   47.213966] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 
1.10.2-1 04/01/2014
[   47.215869] RIP: 0010:__mmdrop+0x136/0x170
[   47.216866] RSP: 0018:82803dd8 EFLAGS: 00010293
[   47.218160] RAX: 82818500 RBX: 88011577 RCX: 810ae876
[   47.219758] RDX:  RSI: 0001 RDI: 88011577
[   47.221306] RBP: 82803e00 R08: 0001 R09: 
[   47.223268] R10:  R11:  R12: 82818500
[   47.224961] R13: 82a8ce20 R14: 88013ff534c0 R15: 03e7
[   47.226716] FS:  () GS:88013b20() 
knlGS:
[   47.228550] CS:  0010 DS:  ES:  CR0: 80050033
[   47.229884] CR2: 7fbfc2cc0190 CR3: 02812000 CR4: 06f0
[   47.231580] Call Trace:
[   47.232144]  idle_task_exit+0x53/0x60
[   47.232947]  play_dead_common+0x9/0x20
[   47.233906]  native_play_dead+0x10/0xed
[   47.234804]  ? cpuhp_report_idle_dead+0x5a/0x70
[   47.236139]  arch_cpu_idle_dead+0xa/0x10
[   47.236954]  do_idle+0x14d/0x1d0
[   47.237834]  cpu_startup_entry+0x6e/0x70
[   47.238735]  rest_init+0xc7/0xd0
[   47.239612]  ? update_intr_gate+0x1b/0x1b
[   47.240516]  start_kernel+0x59f/0x5c2
[   47.241282]  x86_64_start_reservations+0x38/0x3a
[   47.242402]  x86_64_start_kernel+0x72/0x75
[   47.243328]  secondary_startup_64+0xa5/0xb0
[   47.244378] Code: 89 ff e8 06 32 07 00 eb 83 e8 f7 11 0d 00 4c 89 e7 e8 8f 
e7 0c 00 eb ba e8 e8 11 0d 00 0f 0b e8 e1 11 0d 00 0f 0b e8 da 11 0d 00 <0f> 0b 
e8 d3 11 0d 00 48 89 df e8 8b ed 15 00 e9 2e ff ff ff e8 
[   47.248938] RIP: __mmdrop+0x136/0x170 RSP: 82803dd8
[   47.250243] ---[ end trace 0f4bf1066c11d4ef ]---


To reproduce:

git clone https://github.com/intel/lkp-tests.git
cd lkp-tests
bin/lkp qemu -k  job-script  # job-script is attached in this 
email



Thanks,
lkp
#
# Automatically generated file; DO NOT EDIT.
# Linux/x86_64 4.16.0-rc3 Kernel Configuration
#
CONFIG_64BIT=y
CONFIG_X86_64=y
CONFIG_X86=y
CONFIG_INSTRUCTION_DECODER=y
CONFIG_OUTPUT_FORMAT="elf64-x86-64"
CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig"
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_MMU=y
CONFIG_ARCH_MMAP_RND_BITS_MIN=28
CONFIG_ARCH_MMAP_RND_BITS_MAX=32
CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8
CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16
CONFIG_NEED_DMA_MAP_STATE=y
CONFIG_NEED_SG_DMA_LENGTH=y
CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENERIC_BUG=y
CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_ARCH_HAS_CPU_RELAX=y
CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
CONFIG_HAVE_SETUP_PER_CPU_AREA=y
CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y
CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
CONFIG_ZONE_DMA32=y
CONFIG_AUDIT_ARCH=y
CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
CONFIG_X86_64_SMP=y
CONFIG_ARCH_SUPPORTS_UPROBES=y
CONFIG_FIX_EARLYCON_MEM=y
CONFIG_PGTABLE_LEVELS=4
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
CONFIG_IRQ_WORK=y
CONFIG_BUILDTIME_EXTABLE_SORT=y
CONFIG_THREAD_INFO_IN_TASK=y

#
# General setup
#
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_CROSS_COMPILE=""
# CONFIG_COMPILE_TEST is not set
CONFIG_LOCALVERSION=""
CONFIG_LOCALVERSION_AUTO=y
CONFIG_HAVE_KERNEL_GZIP=y
CONFIG_HAVE_KERNEL_BZIP2=y
CONFIG_HAVE_KERNEL_LZMA=y
CONFIG_HAVE_KERNEL_XZ=y