syzbot


KASAN: stack-out-of-bounds Read in profile_pc

Status: fixed on 2024/08/15 03:06
Reported-by: syzbot+7360dca9d8571a365f7e@syzkaller.appspotmail.com
Fix commit: 161cef818545 x86: stop playing stack games in profile_pc()
First crash: 556d, last: 139d
Fix bisection: fixed by (bisect log) :
commit 161cef818545ecf980f0e2ebaf8ba7326ce53c2b
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date: Fri Jun 28 21:27:22 2024 +0000

  x86: stop playing stack games in profile_pc()

  
Bug presence (1)
Date Name Commit Repro Result
2024/08/03 upstream (ToT) 17712b7ea075 C Didn't crash
Similar bugs (3)
Kernel Title Repro Cause bisect Fix bisect Count Last Reported Patched Status
android-54 KASAN: stack-out-of-bounds Read in profile_pc C 1799 98d 1274d 0/2 upstream: reported C repro on 2021/05/27 02:31
linux-5.15 KASAN: stack-out-of-bounds Read in profile_pc C error 775 139d 610d 0/3 auto-obsoleted due to no activity on 2024/09/13 06:51
upstream KASAN: stack-out-of-bounds Read in profile_pc kernel C error done 9302 145d 1270d 28/28 fixed on 2024/10/31 09:35
Fix bisection attempts (2)
Created Duration User Patch Repo Result
2024/08/14 23:39 3h14m bisect fix linux-6.1.y OK (1) job log
2023/12/21 23:06 55m bisect fix linux-6.1.y OK (0) job log log

Sample crash report:
==================================================================
BUG: KASAN: stack-out-of-bounds in profile_pc+0xa4/0xe0 arch/x86/kernel/time.c:42
Read of size 8 at addr ffffc90003b0f780 by task syz-executor219/3557

CPU: 1 PID: 3557 Comm: syz-executor219 Not tainted 6.1.84-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 03/27/2024
Call Trace:
 <IRQ>
 __dump_stack lib/dump_stack.c:88 [inline]
 dump_stack_lvl+0x1e3/0x2cb lib/dump_stack.c:106
 print_address_description mm/kasan/report.c:284 [inline]
 print_report+0x15f/0x4f0 mm/kasan/report.c:395
 kasan_report+0x136/0x160 mm/kasan/report.c:495
 profile_pc+0xa4/0xe0 arch/x86/kernel/time.c:42
 profile_tick+0xee/0x170 kernel/profile.c:339
 tick_sched_handle kernel/time/tick-sched.c:255 [inline]
 tick_sched_timer+0x390/0x550 kernel/time/tick-sched.c:1501
 __run_hrtimer kernel/time/hrtimer.c:1686 [inline]
 __hrtimer_run_queues+0x5a7/0xe50 kernel/time/hrtimer.c:1750
 hrtimer_interrupt+0x392/0x980 kernel/time/hrtimer.c:1812
 local_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1095 [inline]
 __sysvec_apic_timer_interrupt+0x156/0x580 arch/x86/kernel/apic/apic.c:1112
 sysvec_apic_timer_interrupt+0x8c/0xb0 arch/x86/kernel/apic/apic.c:1106
 </IRQ>
 <TASK>
 asm_sysvec_apic_timer_interrupt+0x16/0x20 arch/x86/include/asm/idtentry.h:653
RIP: 0010:__raw_spin_unlock_irqrestore include/linux/spinlock_api_smp.h:152 [inline]
RIP: 0010:_raw_spin_unlock_irqrestore+0xd4/0x130 kernel/locking/spinlock.c:194
Code: 9c 8f 44 24 20 42 80 3c 23 00 74 08 4c 89 f7 e8 12 a3 4d f7 f6 44 24 21 02 75 4e 41 f7 c7 00 02 00 00 74 01 fb bf 01 00 00 00 <e8> 17 e9 c9 f6 65 8b 05 b8 14 6e 75 85 c0 74 3f 48 c7 04 24 0e 36
RSP: 0018:ffffc90003b0f780 EFLAGS: 00000206
RAX: 5eeb74aa642c8700 RBX: 1ffff92000761ef4 RCX: ffffffff816ac11a
RDX: dffffc0000000000 RSI: ffffffff8aebeec0 RDI: 0000000000000001
RBP: ffffc90003b0f818 R08: dffffc0000000000 R09: fffffbfff209304b
R10: 0000000000000000 R11: dffffc0000000001 R12: dffffc0000000000
R13: 1ffff92000761ef0 R14: ffffc90003b0f7a0 R15: 0000000000000246
 __debug_check_no_obj_freed lib/debugobjects.c:987 [inline]
 debug_check_no_obj_freed+0x455/0x4e0 lib/debugobjects.c:1008
 slab_free_hook mm/slub.c:1699 [inline]
 slab_free_freelist_hook mm/slub.c:1750 [inline]
 slab_free mm/slub.c:3661 [inline]
 kmem_cache_free+0x241/0x510 mm/slub.c:3683
 anon_vma_chain_free mm/rmap.c:146 [inline]
 unlink_anon_vmas+0x59a/0x5e0 mm/rmap.c:446
 free_pgtables+0x344/0x4f0 mm/memory.c:430
 exit_mmap+0x3bb/0x9f0 mm/mmap.c:3237
 __mmput+0x115/0x3c0 kernel/fork.c:1199
 exit_mm+0x226/0x300 kernel/exit.c:563
 do_exit+0x9f6/0x26a0 kernel/exit.c:856
 do_group_exit+0x202/0x2b0 kernel/exit.c:1019
 __do_sys_exit_group kernel/exit.c:1030 [inline]
 __se_sys_exit_group kernel/exit.c:1028 [inline]
 __x64_sys_exit_group+0x3b/0x40 kernel/exit.c:1028
 do_syscall_x64 arch/x86/entry/common.c:51 [inline]
 do_syscall_64+0x3d/0xb0 arch/x86/entry/common.c:81
 entry_SYSCALL_64_after_hwframe+0x63/0xcd
RIP: 0033:0x7f5d01fc8e09
Code: Unable to access opcode bytes at 0x7f5d01fc8ddf.
RSP: 002b:00007fff25bc38b8 EFLAGS: 00000246 ORIG_RAX: 00000000000000e7
RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f5d01fc8e09
RDX: 000000000000003c RSI: 00000000000000e7 RDI: 0000000000000000
RBP: 00007f5d02044350 R08: ffffffffffffffb8 R09: 0000000000000006
R10: 0000000000000012 R11: 0000000000000246 R12: 00007f5d02044350
R13: 0000000000000000 R14: 00007f5d02044da0 R15: 00007f5d01f99dd0
 </TASK>

The buggy address belongs to stack of task syz-executor219/3557
 and is located at offset 0 in frame:
 _raw_spin_unlock_irqrestore+0x0/0x130 kernel/locking/spinlock.c:187

This frame has 1 object:
 [32, 40) 'flags.i.i.i.i'

The buggy address belongs to the virtual mapping at
 [ffffc90003b08000, ffffc90003b11000) created by:
 copy_process+0x637/0x4060 kernel/fork.c:2098

The buggy address belongs to the physical page:
page:ffffea0000858000 refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x21600
flags: 0xfff80000000000(node=0|zone=1|lastcpupid=0xfff)
raw: 00fff80000000000 0000000000000000 dead000000000122 0000000000000000
raw: 0000000000000000 0000000000000000 00000001ffffffff 0000000000000000
page dumped because: kasan: bad access detected
page_owner tracks the page as allocated
page last allocated via order 0, migratetype Unmovable, gfp_mask 0x2dc2(GFP_KERNEL|__GFP_HIGHMEM|__GFP_NOWARN|__GFP_ZERO), pid 3540, tgid 3540 (syz-executor219), ts 54423979489, free_ts 33349145585
 set_page_owner include/linux/page_owner.h:31 [inline]
 post_alloc_hook+0x18d/0x1b0 mm/page_alloc.c:2513
 prep_new_page mm/page_alloc.c:2520 [inline]
 get_page_from_freelist+0x31a1/0x3320 mm/page_alloc.c:4279
 __alloc_pages+0x28d/0x770 mm/page_alloc.c:5547
 vm_area_alloc_pages mm/vmalloc.c:2983 [inline]
 __vmalloc_area_node mm/vmalloc.c:3051 [inline]
 __vmalloc_node_range+0x96c/0x1460 mm/vmalloc.c:3223
 alloc_thread_stack_node kernel/fork.c:311 [inline]
 dup_task_struct+0x3e5/0x6d0 kernel/fork.c:988
 copy_process+0x637/0x4060 kernel/fork.c:2098
 kernel_clone+0x222/0x920 kernel/fork.c:2682
 __do_sys_clone kernel/fork.c:2823 [inline]
 __se_sys_clone kernel/fork.c:2807 [inline]
 __x64_sys_clone+0x231/0x280 kernel/fork.c:2807
 do_syscall_x64 arch/x86/entry/common.c:51 [inline]
 do_syscall_64+0x3d/0xb0 arch/x86/entry/common.c:81
 entry_SYSCALL_64_after_hwframe+0x63/0xcd
page last free stack trace:
 reset_page_owner include/linux/page_owner.h:24 [inline]
 free_pages_prepare mm/page_alloc.c:1440 [inline]
 free_pcp_prepare mm/page_alloc.c:1490 [inline]
 free_unref_page_prepare+0xf63/0x1120 mm/page_alloc.c:3358
 free_unref_page+0x33/0x3e0 mm/page_alloc.c:3453
 qlink_free mm/kasan/quarantine.c:168 [inline]
 qlist_free_all+0x76/0xe0 mm/kasan/quarantine.c:187
 kasan_quarantine_reduce+0x156/0x170 mm/kasan/quarantine.c:294
 __kasan_slab_alloc+0x1f/0x70 mm/kasan/common.c:305
 kasan_slab_alloc include/linux/kasan.h:201 [inline]
 slab_post_alloc_hook+0x52/0x3a0 mm/slab.h:737
 slab_alloc_node mm/slub.c:3398 [inline]
 slab_alloc mm/slub.c:3406 [inline]
 __kmem_cache_alloc_lru mm/slub.c:3413 [inline]
 kmem_cache_alloc+0x10c/0x2d0 mm/slub.c:3422
 getname_flags+0xb8/0x4f0 fs/namei.c:139
 vfs_fstatat fs/stat.c:266 [inline]
 __do_sys_newfstatat fs/stat.c:437 [inline]
 __se_sys_newfstatat fs/stat.c:431 [inline]
 __x64_sys_newfstatat+0x130/0x1e0 fs/stat.c:431
 do_syscall_x64 arch/x86/entry/common.c:51 [inline]
 do_syscall_64+0x3d/0xb0 arch/x86/entry/common.c:81
 entry_SYSCALL_64_after_hwframe+0x63/0xcd

Memory state around the buggy address:
 ffffc90003b0f680: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 ffffc90003b0f700: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>ffffc90003b0f780: f1 f1 f1 f1 00 f3 f3 f3 00 00 00 00 00 00 00 00
                   ^
 ffffc90003b0f800: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 ffffc90003b0f880: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
==================================================================
----------------
Code disassembly (best guess):
   0:	9c                   	pushf
   1:	8f 44 24 20          	pop    0x20(%rsp)
   5:	42 80 3c 23 00       	cmpb   $0x0,(%rbx,%r12,1)
   a:	74 08                	je     0x14
   c:	4c 89 f7             	mov    %r14,%rdi
   f:	e8 12 a3 4d f7       	call   0xf74da326
  14:	f6 44 24 21 02       	testb  $0x2,0x21(%rsp)
  19:	75 4e                	jne    0x69
  1b:	41 f7 c7 00 02 00 00 	test   $0x200,%r15d
  22:	74 01                	je     0x25
  24:	fb                   	sti
  25:	bf 01 00 00 00       	mov    $0x1,%edi
* 2a:	e8 17 e9 c9 f6       	call   0xf6c9e946 <-- trapping instruction
  2f:	65 8b 05 b8 14 6e 75 	mov    %gs:0x756e14b8(%rip),%eax        # 0x756e14ee
  36:	85 c0                	test   %eax,%eax
  38:	74 3f                	je     0x79
  3a:	48                   	rex.W
  3b:	c7                   	.byte 0xc7
  3c:	04 24                	add    $0x24,%al
  3e:	0e                   	(bad)
  3f:	36                   	ss

Crashes (690):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2024/04/04 21:11 linux-6.1.y 347385861c50 0ee3535e .config console log report syz C [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2023/12/25 21:46 linux-6.1.y 4aa6747d9352 fb427a07 .config console log report syz C [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2023/08/28 22:19 linux-6.1.y 024f76bca9d0 7ba13a15 .config console log report syz C [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2023/05/15 01:52 linux-6.1.y bf4ad6fa4e53 2b9ba477 .config console log report syz C [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/07/05 07:14 linux-6.1.y 99e6a620de00 3f2748a3 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/07/05 04:31 linux-6.1.y 99e6a620de00 3f2748a3 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/07/05 00:02 linux-6.1.y 99e6a620de00 3f2748a3 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/07/04 23:44 linux-6.1.y 99e6a620de00 3f2748a3 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/07/04 19:55 linux-6.1.y 99e6a620de00 3f2748a3 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/07/04 17:38 linux-6.1.y 99e6a620de00 3f2748a3 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/07/04 16:32 linux-6.1.y 99e6a620de00 3f2748a3 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/07/03 17:57 linux-6.1.y 99e6a620de00 1ecfa2d8 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/07/03 16:00 linux-6.1.y 99e6a620de00 1ecfa2d8 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/07/03 15:59 linux-6.1.y 99e6a620de00 1ecfa2d8 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/07/03 02:54 linux-6.1.y 99e6a620de00 07f0a0a0 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/07/02 23:12 linux-6.1.y 99e6a620de00 07f0a0a0 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/07/02 21:32 linux-6.1.y 99e6a620de00 07f0a0a0 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/07/02 19:31 linux-6.1.y 99e6a620de00 07f0a0a0 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/07/02 17:41 linux-6.1.y 99e6a620de00 07f0a0a0 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/07/02 17:27 linux-6.1.y 99e6a620de00 07f0a0a0 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/07/02 08:52 linux-6.1.y 99e6a620de00 b294e901 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/07/02 07:31 linux-6.1.y 99e6a620de00 b294e901 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/07/02 04:21 linux-6.1.y 99e6a620de00 b294e901 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/07/02 03:10 linux-6.1.y 99e6a620de00 b294e901 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/07/02 02:05 linux-6.1.y 99e6a620de00 b294e901 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/07/02 00:00 linux-6.1.y 99e6a620de00 b294e901 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/07/01 22:41 linux-6.1.y 99e6a620de00 b294e901 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/07/01 11:33 linux-6.1.y 99e6a620de00 757f06b1 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/06/30 23:25 linux-6.1.y 99e6a620de00 757f06b1 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/06/30 19:34 linux-6.1.y 99e6a620de00 757f06b1 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/06/30 16:29 linux-6.1.y 99e6a620de00 757f06b1 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/06/30 14:57 linux-6.1.y 99e6a620de00 757f06b1 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/06/30 13:39 linux-6.1.y 99e6a620de00 757f06b1 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/06/30 04:39 linux-6.1.y 99e6a620de00 757f06b1 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/06/29 23:39 linux-6.1.y 99e6a620de00 757f06b1 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/06/29 22:32 linux-6.1.y 99e6a620de00 757f06b1 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/06/29 20:01 linux-6.1.y 99e6a620de00 757f06b1 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/06/29 16:54 linux-6.1.y 99e6a620de00 757f06b1 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/06/29 09:36 linux-6.1.y 99e6a620de00 757f06b1 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/06/29 06:34 linux-6.1.y 99e6a620de00 757f06b1 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/06/29 04:28 linux-6.1.y 99e6a620de00 757f06b1 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/06/29 03:06 linux-6.1.y 99e6a620de00 757f06b1 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/06/29 01:48 linux-6.1.y 99e6a620de00 757f06b1 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/06/29 01:08 linux-6.1.y 99e6a620de00 757f06b1 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/06/28 23:36 linux-6.1.y 99e6a620de00 757f06b1 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/06/28 13:33 linux-6.1.y 99e6a620de00 6ef39602 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/06/28 09:22 linux-6.1.y 99e6a620de00 6ef39602 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
2024/06/28 04:20 linux-6.1.y 99e6a620de00 6ef39602 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan KASAN: stack-out-of-bounds Read in profile_pc
* Struck through repros no longer work on HEAD.