a8dda165ec vfree: add debug might_sleep() dd2283f260 mm: mmap: zap pages with read mmap_sem in munmap 5929a1f0ff Merge tag 'riscv-for-linus-4.20-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/palmer/riscv-linux 0bc80e3cb0 Add linux-next specific files for 20181114 +-----------------------------------------------------+------------+------------+------------+---------------+ | | a8dda165ec | dd2283f260 | 5929a1f0ff | next-20181114 | +-----------------------------------------------------+------------+------------+------------+---------------+ | boot_successes | 314 | 178 | 190 | 168 | | boot_failures | 393 | 27 | 21 | 40 | | WARNING:held_lock_freed | 383 | 23 | 17 | 39 | | is_freeing_memory#-#,with_a_lock_still_held_there | 383 | 23 | 17 | 39 | | BUG:unable_to_handle_kernel | 5 | 2 | 4 | 1 | | Oops:#[##] | 9 | 3 | 4 | 1 | | EIP:debug_check_no_locks_freed | 9 | 3 | 4 | 1 | | Kernel_panic-not_syncing:Fatal_exception | 9 | 3 | 4 | 1 | | Mem-Info | 4 | 1 | | | | invoked_oom-killer:gfp_mask=0x | 1 | 1 | | | | WARNING:at_kernel/locking/lockdep.c:#lock_downgrade | 0 | 6 | 4 | 7 | | EIP:lock_downgrade | 0 | 6 | 4 | 7 | +-----------------------------------------------------+------------+------------+------------+---------------+ [ 96.288009] random: get_random_u32 called from arch_rnd+0x3c/0x70 with crng_init=0 [ 96.359626] input_id (331) used greatest stack depth: 6360 bytes left [ 96.749228] grep (358) used greatest stack depth: 6336 bytes left [ 96.921470] network.sh (341) used greatest stack depth: 6212 bytes left [ 97.262340] [ 97.262587] ========================= [ 97.263072] WARNING: held lock freed! [ 97.263536] 4.19.0-06969-gdd2283f #1 Not tainted [ 97.264110] ------------------------- [ 97.264575] udevd/198 is freeing memory 9c16c930-9c16c99b, with a lock still held there! [ 97.265542] (ptrval) (&anon_vma->rwsem){....}, at: unlink_anon_vmas+0x14e/0x420 [ 97.266450] 1 lock held by udevd/198: [ 97.266924] #0: (ptrval) (&mm->mmap_sem){....}, at: __do_munmap+0x531/0x730 I have not figured out what this is caused by. But, the below warning looks more confusing. This might be caused by the below one. [ 97.267773] [ 97.267773] stack backtrace: [ 97.268140] _warn_unseeded_randomness: 113 callbacks suppressed [ 97.268148] random: get_random_u32 called from copy_process+0x673/0x2d80 with crng_init=0 [ 97.268310] CPU: 1 PID: 198 Comm: udevd Not tainted 4.19.0-06969-gdd2283f #1 [ 97.270901] Call Trace: [ 97.271232] dump_stack+0xd6/0x11a [ 97.271674] debug_check_no_locks_freed+0x249/0x2c0 [ 97.272311] kmem_cache_free+0x193/0x6e0 [ 97.272805] __put_anon_vma+0xd6/0x240 [ 97.273280] unlink_anon_vmas+0x362/0x420 [ 97.273793] free_pgtables+0x46/0x190 [ 97.274253] unmap_region+0x168/0x1b0 [ 97.274711] __do_munmap+0x558/0x730 [ 97.275164] __vm_munmap+0x92/0x120 [ 97.275604] sys_munmap+0x26/0x40 [ 97.276026] do_int80_syscall_32+0xfe/0x360 [ 97.276545] entry_INT80_32+0xda/0xda [ 97.277036] EIP: 0x47f42d61 [ 97.277391] Code: c1 be a2 09 00 8b 89 08 ff ff ff 31 d2 29 c2 65 89 11 83 c8 ff eb d7 90 90 89 da 8b 4c 24 08 8b 5c 24 04 b8 5b 00 00 00 cd 80 <89> d3 3d 01 f0 ff ff 73 01 c3 e8 76 c3 03 00 81 c1 84 a2 09 00 8b [ 97.279628] EAX: ffffffda EBX: 77f68000 ECX: 00001000 EDX: 47fdcff4 [ 97.280412] ESI: 08080da0 EDI: 00000000 EBP: 00000000 ESP: 7fbf1d08 [ 97.281182] DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 007b EFLAGS: 00000206 [ 97.376958] ------------[ cut here ]------------ [ 97.377600] downgrading a read lock I'm confused why it is trying to downgrade a read lock. sys_munmap() should just hold write lock before reaching downgrade_write(). But, taking a look at lock_downgrade(), it sounds the lock is set to read, then calling require_held_locks(). Is possible there are some race conditions? Cc'ed Waiman Long. Thanks, Yang [ 97.377622] WARNING: CPU: 0 PID: 198 at kernel/locking/lockdep.c:3556 lock_downgrade+0x20c/0x3a0 [ 97.379416] CPU: 0 PID: 198 Comm: udevd Not tainted 4.19.0-06969-gdd2283f #1 [ 97.380330] EIP: lock_downgrade+0x20c/0x3a0 [ 97.380896] Code: 05 78 7a 95 84 01 c7 04 24 4f 5e b9 83 89 45 e0 83 15 7c 7a 95 84 00 e8 e2 5c f5 ff 83 05 80 7a 95 84 01 83 15 84 7a 95 84 00 <0f> 0b 8b 45 ec 83 05 88 7a 95 84 01 89 45 e8 8b 45 e0 83 15 8c 7a [ 97.383256] EAX: 00000017 EBX: 9d6adc80 ECX: 00000000 EDX: 000002dc [ 97.384100] ESI: 00000001 EDI: 8141bb11 EBP: 9c1b5ee8 ESP: 9c1b5ec0 [ 97.384938] DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 EFLAGS: 00010046 [ 97.385831] CR0: 80050033 CR2: 77f68000 CR3: 1c11d000 CR4: 00140690 [ 97.386641] DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000 [ 97.387443] DR6: fffe0ff0 DR7: 00000400 [ 97.387980] Call Trace: [ 97.388333] downgrade_write+0x3d/0x1b0 [ 97.388865] __do_munmap+0x531/0x730 [ 97.389406] __vm_munmap+0x92/0x120 [ 97.389891] sys_munmap+0x26/0x40 [ 97.390351] do_int80_syscall_32+0xfe/0x360 [ 97.390923] entry_INT80_32+0xda/0xda [ 97.391437] EIP: 0x47f42d61 [ 97.391813] Code: c1 be a2 09 00 8b 89 08 ff ff ff 31 d2 29 c2 65 89 11 83 c8 ff eb d7 90 90 89 da 8b 4c 24 08 8b 5c 24 04 b8 5b 00 00 00 cd 80 <89> d3 3d 01 f0 ff ff 73 01 c3 e8 76 c3 03 00 81 c1 84 a2 09 00 8b [ 97.394148] EAX: ffffffda EBX: 77f68000 ECX: 00001000 EDX: 47fdcff4 [ 97.394945] ESI: 08080da0 EDI: 00000000 EBP: 00000000 ESP: 7fbf1d08 [ 97.395759] DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 007b EFLAGS: 00000206 [ 97.396628] ---[ end trace 2d49d562090f3ba6 ]--- [ 97.502082] random: get_random_u32 called from arch_rnd+0x3c/0x70 with crng_init=0 # HH:MM RESULT GOOD BAD GOOD_BUT_DIRTY DIRTY_NOT_BAD git bisect start ccda4af0f4b92f7b4c308d3acc262f4a7e3affad v4.19 -- git bisect bad ac435075892e3e651c667b4a9f2267cf3ef1d5a2 # 01:46 B 4 1 3 3 Merge tag 'csky-for-linus-4.20' of https://github.com/c-sky/csky-linux git bisect good 01aa9d518eae8a4d75cd3049defc6ed0b6d0a658 # 03:05 G 42 0 6 6 Merge tag 'docs-4.20' of git://git.lwn.net/linux git bisect good 26873acacbdbb4e4b444f5dd28dcc4853f0e8ba2 # 03:30 G 44 0 4 4 Merge tag 'driver-core-4.20-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core git bisect good a45dcff7489f7cb21a3a8e967a90ea41b31c1559 # 03:49 G 44 0 8 8 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc git bisect bad 5ecf3e110c32c5756351eed067cdf6a91c308e62 # 04:07 B 17 1 1 1 Merge tag 'linux-watchdog-4.20-rc1' of git://www.linux-watchdog.org/linux-watchdog git bisect bad b59dfdaef173677b0b7e10f375226c0a1114fd20 # 04:35 B 20 1 5 5 i2c-hid: properly terminate i2c_hid_dmi_desc_override_table[] array git bisect good 4904008165c8a1c48602b8316139691b8c735e6e # 05:48 G 200 0 24 24 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net git bisect bad 345671ea0f9258f410eb057b9ced9cefbbe5dc78 # 06:13 B 31 1 5 5 Merge branch 'akpm' (patches from Andrew) git bisect good 4b85afbdacd290c7a22c96df40a6433fdcacb509 # 06:53 G 205 0 101 101 mm: zero-seek shrinkers git bisect bad 85a06835f6f1ba79f0f00838ccd5ad840dd1eafb # 07:24 B 61 3 34 34 mm: mremap: downgrade mmap_sem to read when shrinking git bisect bad 85cfb245060e45640fa3447f8b0bad5e8bd3bdaf # 07:43 B 20 1 2 2 memcg: remove memcg_kmem_skip_account git bisect bad dd2283f2605e3b3e9c61bcae844b34f2afa4813f # 08:02 B 15 1 0 0 mm: mmap: zap pages with read mmap_sem in munmap git bisect good dedf2c73b80b4566dfcae8ebe9ed46a38b63a1f9 # 08:36 G 196 0 33 33 mm/mempolicy.c: use match_string() helper to simplify the code git bisect good 3ca4ea3a7a78a243ee9edf71a2736bc8fb26d70f # 10:40 G 197 0 31 31 mm/vmalloc.c: improve vfree() kerneldoc git bisect good a8dda165ec34fac2b4119654330150e2c896e531 # 11:28 G 202 0 114 115 vfree: add debug might_sleep() # first bad commit: [dd2283f2605e3b3e9c61bcae844b34f2afa4813f] mm: mmap: zap pages with read mmap_sem in munmap git bisect good a8dda165ec34fac2b4119654330150e2c896e531 # 12:17 G 585 0 283 399 vfree: add debug might_sleep() # extra tests with debug options git bisect bad dd2283f2605e3b3e9c61bcae844b34f2afa4813f # 12:38 B 14 1 4 4 mm: mmap: zap pages with read mmap_sem in munmap # extra tests on HEAD of linux-devel/devel-hourly-2018111421 git bisect bad ead84f4ee6640e1bda88302f402bf5f2e0cf78ec # 12:38 B 5 3 0 5 0day head guard for 'devel-hourly-2018111421' # extra tests on tree/branch linus/master git bisect bad 5929a1f0ff30d04ccf4b0f9c648e7aa8bc816bbd # 12:59 B 36 1 8 8 Merge tag 'riscv-for-linus-4.20-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/palmer/riscv-linux # extra tests on tree/branch linux-next/master git bisect bad 0bc80e3cb0c14878ae0a7779d46f1192221f080e # 13:19 B 57 3 14 14 Add linux-next specific files for 20181114 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/lkp Intel Corporation |