syzbot


KASAN: use-after-scope Read in debug_check_no_obj_freed

Status: auto-closed as invalid on 2019/05/14 03:46
Subsystems: hardening mm
[Documentation on labels]
Reported-by: syzbot+cbb63618f407d4895367@syzkaller.appspotmail.com
First crash: 1989d, last: 1989d

Sample crash report:
==================================================================
kasan: CONFIG_KASAN_INLINE enabled
BUG: KASAN: use-after-scope in __debug_check_no_obj_freed lib/debugobjects.c:778 [inline]
BUG: KASAN: use-after-scope in debug_check_no_obj_freed+0x45f/0x58d lib/debugobjects.c:818
kasan: GPF could be caused by NULL-ptr deref or user memory access
Read of size 8 at addr ffff8881da94a6c8 by task khugepaged/1013
general protection fault: 0000 [#1] PREEMPT SMP KASAN

CPU: 0 PID: 7749 Comm: syz-executor1 Not tainted 4.20.0-rc2+ #295
CPU: 1 PID: 1013 Comm: khugepaged Not tainted 4.20.0-rc2+ #295
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
RIP: 0010:vmalloc_fault+0x426/0x770 arch/x86/mm/fault.c:405
Call Trace:
------------[ cut here ]------------
 __dump_stack lib/dump_stack.c:77 [inline]
 dump_stack+0x244/0x39d lib/dump_stack.c:113
Bad or missing usercopy whitelist? Kernel memory overwrite attempt detected to SLAB object '' (offset 18446744069414924669, size 2)!
WARNING: CPU: 0 PID: 7749 at mm/usercopy.c:83 usercopy_warn+0xee/0x110 mm/usercopy.c:78
Kernel panic - not syncing: panic_on_warn set ...
 print_address_description.cold.7+0x9/0x1ff mm/kasan/report.c:256
 kasan_report_error mm/kasan/report.c:354 [inline]
 kasan_report.cold.8+0x242/0x309 mm/kasan/report.c:412
 __asan_report_load8_noabort+0x14/0x20 mm/kasan/report.c:433
 __debug_check_no_obj_freed lib/debugobjects.c:778 [inline]
 debug_check_no_obj_freed+0x45f/0x58d lib/debugobjects.c:818
 free_pages_prepare mm/page_alloc.c:1034 [inline]
 free_pcp_prepare mm/page_alloc.c:1048 [inline]
 free_unref_page_prepare mm/page_alloc.c:2743 [inline]
 free_unref_page_list+0x3c4/0x11e0 mm/page_alloc.c:2812
 release_pages+0xab5/0x26a0 mm/swap.c:791
 pagevec_lru_move_fn+0x28c/0x350 mm/swap.c:213
 __pagevec_lru_add mm/swap.c:918 [inline]
 __lru_cache_add+0x2d3/0x4e0 mm/swap.c:409
 lru_cache_add+0x417/0xa50 mm/swap.c:445
 putback_lru_page+0x8c/0x280 mm/vmscan.c:1007
 release_pte_page+0x216/0x3a0 mm/khugepaged.c:508
 __collapse_huge_page_copy mm/khugepaged.c:664 [inline]
 collapse_huge_page mm/khugepaged.c:1060 [inline]
 khugepaged_scan_pmd+0x2573/0x3d60 mm/khugepaged.c:1216
 khugepaged_scan_mm_slot mm/khugepaged.c:1703 [inline]
 khugepaged_do_scan mm/khugepaged.c:1784 [inline]
 khugepaged+0xf20/0x1750 mm/khugepaged.c:1829
 kthread+0x35a/0x440 kernel/kthread.c:246
 ret_from_fork+0x3a/0x50 arch/x86/entry/entry_64.S:352

The buggy address belongs to the object at ffff8881da94a000
 which belongs to the cache ,ԁ of size -30591
The buggy address is located 32327 bytes to the right of
 -30591-byte region [ffff8881da94a000, ffff8881da942881)
The buggy address belongs to the page:
page:ffffea00076a5280 count:1 mapcount:0 mapping:ffff8881da813e40 index:0xffff8881da94afb9
flags: 0x2fffc0000000200(slab)
raw: 02fffc0000000200 ffffea0006e70848 ffffea00076a5188 ffff8881da813e40
raw: ffff8881da94afb9 ffff8881da94a000 0000000100000047 0000000000000000
page dumped because: kasan: bad access detected

Memory state around the buggy address:
 ffff8881da94a580: 00 00 00 00 fc fc 00 00 00 00 00 fc fc 00 00 00
 ffff8881da94a600: 00 00 00 00 00 00 00 00 00 00 00 00 00 f1 f1 f1
>ffff8881da94a680: f1 00 f2 f2 f2 f2 f2 f2 f2 f8 f2 f2 f2 00 00 fc
                                              ^
 ffff8881da94a700: 00 00 00 00 00 00 00 00 00 00 00 00 00 f1 f1 f1
 ffff8881da94a780: f1 f8 f2 f2 f2 00 00 00 00 00 00 00 00 00 00 00
==================================================================
kasan: CONFIG_KASAN_INLINE enabled
kasan: GPF could be caused by NULL-ptr deref or user memory access
Shutting down cpus with NMI
Kernel Offset: disabled

======================================================
WARNING: possible circular locking dependency detected
4.20.0-rc2+ #295 Not tainted
------------------------------------------------------
khugepaged/1013 is trying to acquire lock:
0000000079711abb ((console_sem).lock){-.-.}, at: down_trylock+0x13/0x70 kernel/locking/semaphore.c:136

but task is already holding lock:
00000000222e7003 (report_lock){....}, at: kasan_start_report mm/kasan/report.c:170 [inline]
00000000222e7003 (report_lock){....}, at: kasan_report_error mm/kasan/report.c:346 [inline]
00000000222e7003 (report_lock){....}, at: kasan_report+0x8b/0x110 mm/kasan/report.c:412

which lock already depends on the new lock.


the existing dependency chain (in reverse order) is:

-> #4 (report_lock){....}:
       __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
       _raw_spin_lock_irqsave+0x99/0xd0 kernel/locking/spinlock.c:152
       kasan_start_report mm/kasan/report.c:170 [inline]
       kasan_report_error mm/kasan/report.c:346 [inline]
       kasan_report+0x8b/0x110 mm/kasan/report.c:412
       __asan_report_load8_noabort+0x14/0x20 mm/kasan/report.c:433
       __debug_check_no_obj_freed lib/debugobjects.c:778 [inline]
       debug_check_no_obj_freed+0x45f/0x58d lib/debugobjects.c:818
       free_pages_prepare mm/page_alloc.c:1034 [inline]
       free_pcp_prepare mm/page_alloc.c:1048 [inline]
       free_unref_page_prepare mm/page_alloc.c:2743 [inline]
       free_unref_page_list+0x3c4/0x11e0 mm/page_alloc.c:2812
       release_pages+0xab5/0x26a0 mm/swap.c:791
       pagevec_lru_move_fn+0x28c/0x350 mm/swap.c:213
       __pagevec_lru_add mm/swap.c:918 [inline]
       __lru_cache_add+0x2d3/0x4e0 mm/swap.c:409
       lru_cache_add+0x417/0xa50 mm/swap.c:445
       putback_lru_page+0x8c/0x280 mm/vmscan.c:1007
       release_pte_page+0x216/0x3a0 mm/khugepaged.c:508
       __collapse_huge_page_copy mm/khugepaged.c:664 [inline]
       collapse_huge_page mm/khugepaged.c:1060 [inline]
       khugepaged_scan_pmd+0x2573/0x3d60 mm/khugepaged.c:1216
       khugepaged_scan_mm_slot mm/khugepaged.c:1703 [inline]
       khugepaged_do_scan mm/khugepaged.c:1784 [inline]
       khugepaged+0xf20/0x1750 mm/khugepaged.c:1829
       kthread+0x35a/0x440 kernel/kthread.c:246
       ret_from_fork+0x3a/0x50 arch/x86/entry/entry_64.S:352

-> #3 (&obj_hash[i].lock){-.-.}:
       __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
       _raw_spin_lock_irqsave+0x99/0xd0 kernel/locking/spinlock.c:152
       __debug_object_init+0x127/0x1290 lib/debugobjects.c:384
       debug_object_init+0x16/0x20 lib/debugobjects.c:432
       debug_hrtimer_init kernel/time/hrtimer.c:410 [inline]
       debug_init kernel/time/hrtimer.c:458 [inline]
       hrtimer_init+0x97/0x490 kernel/time/hrtimer.c:1308
       init_dl_task_timer+0x1b/0x50 kernel/sched/deadline.c:1057
       __sched_fork+0x2ae/0x590 kernel/sched/core.c:2166
       init_idle+0x75/0x740 kernel/sched/core.c:5374
       sched_init+0xb33/0xc07 kernel/sched/core.c:6060
       start_kernel+0x4be/0xa2b init/main.c:608
       x86_64_start_reservations+0x2e/0x30 arch/x86/kernel/head64.c:472
       x86_64_start_kernel+0x76/0x79 arch/x86/kernel/head64.c:451
       secondary_startup_64+0xa4/0xb0 arch/x86/kernel/head_64.S:243

-> #2 (&rq->lock){-.-.}:
       __raw_spin_lock include/linux/spinlock_api_smp.h:142 [inline]
       _raw_spin_lock+0x2d/0x40 kernel/locking/spinlock.c:144
       rq_lock kernel/sched/sched.h:1126 [inline]
       task_fork_fair+0xb0/0x6d0 kernel/sched/fair.c:9768
       sched_fork+0x443/0xba0 kernel/sched/core.c:2359
       copy_process+0x25b8/0x87a0 kernel/fork.c:1887
       _do_fork+0x1cb/0x11d0 kernel/fork.c:2216
       kernel_thread+0x34/0x40 kernel/fork.c:2275
       rest_init+0x28/0x372 init/main.c:409
       arch_call_rest_init+0xe/0x1b
       start_kernel+0x9f0/0xa2b init/main.c:745
       x86_64_start_reservations+0x2e/0x30 arch/x86/kernel/head64.c:472
       x86_64_start_kernel+0x76/0x79 arch/x86/kernel/head64.c:451
       secondary_startup_64+0xa4/0xb0 arch/x86/kernel/head_64.S:243

-> #1 (&p->pi_lock){-.-.}:
       __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
       _raw_spin_lock_irqsave+0x99/0xd0 kernel/locking/spinlock.c:152
       try_to_wake_up+0xdc/0x1490 kernel/sched/core.c:1965
       wake_up_process+0x10/0x20 kernel/sched/core.c:2129
       __up.isra.1+0x1c0/0x2a0 kernel/locking/semaphore.c:262
       up+0x13c/0x1c0 kernel/locking/semaphore.c:187
       __up_console_sem+0xbe/0x1b0 kernel/printk/printk.c:236
       console_unlock+0x811/0x1190 kernel/printk/printk.c:2432
       vprintk_emit+0x391/0x990 kernel/printk/printk.c:1922
       vprintk_default+0x28/0x30 kernel/printk/printk.c:1964
       vprintk_func+0x7e/0x181 kernel/printk/printk_safe.c:398
       printk+0xa7/0xcf kernel/printk/printk.c:1997
       kobject_uevent_env+0x96/0x101e lib/kobject_uevent.c:467
       call_crda net/wireless/reg.c:556 [inline]
       reg_query_database+0x283/0x400 net/wireless/reg.c:1104
       reg_process_hint_core net/wireless/reg.c:2339 [inline]
       reg_process_hint+0x189/0xec0 net/wireless/reg.c:2677
       reg_process_pending_hints net/wireless/reg.c:2767 [inline]
       reg_todo+0x49a/0xc20 net/wireless/reg.c:2844
       process_one_work+0xc90/0x1c40 kernel/workqueue.c:2153
       worker_thread+0x17f/0x1390 kernel/workqueue.c:2296
       kthread+0x35a/0x440 kernel/kthread.c:246
       ret_from_fork+0x3a/0x50 arch/x86/entry/entry_64.S:352

-> #0 ((console_sem).lock){-.-.}:
       lock_acquire+0x1ed/0x520 kernel/locking/lockdep.c:3844
       __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
       _raw_spin_lock_irqsave+0x99/0xd0 kernel/locking/spinlock.c:152
       down_trylock+0x13/0x70 kernel/locking/semaphore.c:136
       __down_trylock_console_sem+0xae/0x1f0 kernel/printk/printk.c:219
       console_trylock+0x15/0xa0 kernel/printk/printk.c:2247
       console_trylock_spinning kernel/printk/printk.c:1653 [inline]
       vprintk_emit+0x372/0x990 kernel/printk/printk.c:1921
       vprintk_default+0x28/0x30 kernel/printk/printk.c:1964
       vprintk_func+0x7e/0x181 kernel/printk/printk_safe.c:398
       printk+0xa7/0xcf kernel/printk/printk.c:1997
       kasan_start_report mm/kasan/report.c:171 [inline]
       kasan_report_error mm/kasan/report.c:346 [inline]
       kasan_report+0x9b/0x110 mm/kasan/report.c:412
       __asan_report_load8_noabort+0x14/0x20 mm/kasan/report.c:433
       __debug_check_no_obj_freed lib/debugobjects.c:778 [inline]
       debug_check_no_obj_freed+0x45f/0x58d lib/debugobjects.c:818
       free_pages_prepare mm/page_alloc.c:1034 [inline]
       free_pcp_prepare mm/page_alloc.c:1048 [inline]
       free_unref_page_prepare mm/page_alloc.c:2743 [inline]
       free_unref_page_list+0x3c4/0x11e0 mm/page_alloc.c:2812
       release_pages+0xab5/0x26a0 mm/swap.c:791
       pagevec_lru_move_fn+0x28c/0x350 mm/swap.c:213
       __pagevec_lru_add mm/swap.c:918 [inline]
       __lru_cache_add+0x2d3/0x4e0 mm/swap.c:409
       lru_cache_add+0x417/0xa50 mm/swap.c:445
       putback_lru_page+0x8c/0x280 mm/vmscan.c:1007
       release_pte_page+0x216/0x3a0 mm/khugepaged.c:508
       __collapse_huge_page_copy mm/khugepaged.c:664 [inline]
       collapse_huge_page mm/khugepaged.c:1060 [inline]
       khugepaged_scan_pmd+0x2573/0x3d60 mm/khugepaged.c:1216
       khugepaged_scan_mm_slot mm/khugepaged.c:1703 [inline]
       khugepaged_do_scan mm/khugepaged.c:1784 [inline]
       khugepaged+0xf20/0x1750 mm/khugepaged.c:1829
       kthread+0x35a/0x440 kernel/kthread.c:246
       ret_from_fork+0x3a/0x50 arch/x86/entry/entry_64.S:352

other info that might help us debug this:

Chain exists of:
  (console_sem).lock --> &obj_hash[i].lock --> report_lock

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(report_lock);
                               lock(&obj_hash[i].lock);
                               lock(report_lock);
  lock((console_sem).lock);

 *** DEADLOCK ***

3 locks held by khugepaged/1013:
 #0: 000000004873e9d5 (&mm->mmap_sem){++++}, at: collapse_huge_page mm/khugepaged.c:1007 [inline]
 #0: 000000004873e9d5 (&mm->mmap_sem){++++}, at: khugepaged_scan_pmd+0x1842/0x3d60 mm/khugepaged.c:1216
 #1: 000000000190329a (&obj_hash[i].lock){-.-.}, at: __debug_check_no_obj_freed lib/debugobjects.c:777 [inline]
 #1: 000000000190329a (&obj_hash[i].lock){-.-.}, at: debug_check_no_obj_freed+0x17a/0x58d lib/debugobjects.c:818
 #2: 00000000222e7003 (report_lock){....}, at: kasan_start_report mm/kasan/report.c:170 [inline]
 #2: 00000000222e7003 (report_lock){....}, at: kasan_report_error mm/kasan/report.c:346 [inline]
 #2: 00000000222e7003 (report_lock){....}, at: kasan_report+0x8b/0x110 mm/kasan/report.c:412

stack backtrace:
CPU: 1 PID: 1013 Comm: khugepaged Not tainted 4.20.0-rc2+ #295
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Call Trace:
 __dump_stack lib/dump_stack.c:77 [inline]
 dump_stack+0x244/0x39d lib/dump_stack.c:113
 print_circular_bug.isra.35.cold.54+0x1bd/0x27d kernel/locking/lockdep.c:1221
 check_prev_add kernel/locking/lockdep.c:1863 [inline]
 check_prevs_add kernel/locking/lockdep.c:1976 [inline]
 validate_chain kernel/locking/lockdep.c:2347 [inline]
 __lock_acquire+0x3399/0x4c20 kernel/locking/lockdep.c:3341
 lock_acquire+0x1ed/0x520 kernel/locking/lockdep.c:3844
 __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
 _raw_spin_lock_irqsave+0x99/0xd0 kernel/locking/spinlock.c:152
 down_trylock+0x13/0x70 kernel/locking/semaphore.c:136
 __down_trylock_console_sem+0xae/0x1f0 kernel/printk/printk.c:219
 console_trylock+0x15/0xa0 kernel/printk/printk.c:2247
 console_trylock_spinning kernel/printk/printk.c:1653 [inline]
 vprintk_emit+0x372/0x990 kernel/printk/printk.c:1921
 vprintk_default+0x28/0x30 kernel/printk/printk.c:1964
 vprintk_func+0x7e/0x181 kernel/printk/printk_safe.c:398
 printk+0xa7/0xcf kernel/printk/printk.c:1997
 kasan_start_report mm/kasan/report.c:171 [inline]
 kasan_report_error mm/kasan/report.c:346 [inline]
 kasan_report+0x9b/0x110 mm/kasan/report.c:412
 __asan_report_load8_noabort+0x14/0x20 mm/kasan/report.c:433
 __debug_check_no_obj_freed lib/debugobjects.c:778 [inline]
 debug_check_no_obj_freed+0x45f/0x58d lib/debugobjects.c:818
 free_pages_prepare mm/page_alloc.c:1034 [inline]
 free_pcp_prepare mm/page_alloc.c:1048 [inline]
 free_unref_page_prepare mm/page_alloc.c:2743 [inline]
 free_unref_page_list+0x3c4/0x11e0 mm/page_alloc.c:2812
 release_pages+0xab5/0x26a0 mm/swap.c:791
 pagevec_lru_move_fn+0x28c/0x350 mm/swap.c:213
 __pagevec_lru_add mm/swap.c:918 [inline]
 __lru_cache_add+0x2d3/0x4e0 mm/swap.c:409
 lru_cache_add+0x417/0xa50 mm/swap.c:445
 
Lost 76 message(s)!
Rebooting in 86400 seconds..

Crashes (1):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2018/11/15 03:45 net-next-old 15cef30974c5 5f5f6d14 .config console log report ci-upstream-net-kasan-gce
* Struck through repros no longer work on HEAD.