[syzbot] KASAN: slab-out-of-bounds Read in fb_pad_aligned_buffer (3)

syzbot <[email protected]>
Newsgroups gmane.linux.kernel
Message-ID <[email protected]>
Hello,

syzbot found the following issue on:

HEAD commit:    f5bbbfec59b4 Merge tag 'probes-fixes-v7.2-rc7' of git://gi..
git tree:       upstream
console output: https://syzkaller.appspot.com/x/log.txt?x=1687b479580000
kernel config:  https://syzkaller.appspot.com/x/.config?x=c44651ea7dd2f307
dashboard link: https://syzkaller.appspot.com/bug?extid=bf4020519fbd94b2355d
compiler:       gcc (Debian 14.2.0-19) 14.2.0, GNU ld (GNU Binutils for Debian) 2.44
C reproducer:   https://syzkaller.appspot.com/x/repro.c?x=12215079580000

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: [email protected]

==================================================================
BUG: KASAN: slab-out-of-bounds in __fb_pad_aligned_buffer include/linux/fb.h:646 [inline]
BUG: KASAN: slab-out-of-bounds in fb_pad_aligned_buffer+0x133/0x160 drivers/video/fbdev/core/fbmem.c:96
Read of size 1 at addr ffff8880559fb200 by task syz-executor146/5994

CPU: 0 UID: 0 PID: 5994 Comm: syz-executor146 Not tainted syzkaller #0 PREEMPT(full) 
Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
Call Trace:
 <TASK>
 __dump_stack lib/dump_stack.c:94 [inline]
 dump_stack_lvl+0x100/0x190 lib/dump_stack.c:120
 print_address_description mm/kasan/report.c:378 [inline]
 print_report+0x13d/0x4b0 mm/kasan/report.c:482
 kasan_report+0xdf/0x1c0 mm/kasan/report.c:595
 __fb_pad_aligned_buffer include/linux/fb.h:646 [inline]
 fb_pad_aligned_buffer+0x133/0x160 drivers/video/fbdev/core/fbmem.c:96
 cw_putcs_aligned drivers/video/fbdev/core/fbcon_cw.c:105 [inline]
 cw_putcs+0x99c/0xbb0 drivers/video/fbdev/core/fbcon_cw.c:159
 fbcon_putcs+0x3b2/0x480 drivers/video/fbdev/core/fbcon.c:1392
 con_putc+0x144/0x170 drivers/tty/vt/vt.c:330
 hide_softcursor drivers/tty/vt/vt.c:872 [inline]
 hide_cursor+0x1b6/0x230 drivers/tty/vt/vt.c:884
 redraw_screen+0x5d4/0x760 drivers/tty/vt/vt.c:985
 fbcon_do_set_font+0x5b3/0x8c0 drivers/video/fbdev/core/fbcon.c:2441
 fbcon_set_font+0x4be/0x730 drivers/video/fbdev/core/fbcon.c:2518
 con_font_set drivers/tty/vt/vt.c:4992 [inline]
 con_font_op+0x9c0/0x1040 drivers/tty/vt/vt.c:5032
 vt_k_ioctl drivers/tty/vt/vt_ioctl.c:474 [inline]
 vt_ioctl+0xe00/0x3150 drivers/tty/vt/vt_ioctl.c:745
 tty_ioctl+0x26a/0x1640 drivers/tty/tty_io.c:2792
 vfs_ioctl fs/ioctl.c:51 [inline]
 __do_sys_ioctl fs/ioctl.c:597 [inline]
 __se_sys_ioctl fs/ioctl.c:583 [inline]
 __x64_sys_ioctl+0x18e/0x210 fs/ioctl.c:583
 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
 do_syscall_64+0x115/0x870 arch/x86/entry/syscall_64.c:94
 entry_SYSCALL_64_after_hwframe+0x77/0x7f
RIP: 0033:0x7f226c5ec57b
Code: 00 48 89 44 24 18 31 c0 48 8d 44 24 60 c7 04 24 10 00 00 00 48 89 44 24 08 48 8d 44 24 20 48 89 44 24 10 b8 10 00 00 00 0f 05 <89> c2 3d 00 f0 ff ff 77 1c 48 8b 44 24 18 64 48 2b 04 25 28 00 00
RSP: 002b:00007ffdf3c4c720 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 00007f226c5ec57b
RDX: 00007ffdf3c4c780 RSI: 0000000000004b72 RDI: 0000000000000003
RBP: 000055557cf01770 R08: 00007f226c6747c0 R09: 0000000000000001
R10: 0000000000000000 R11: 0000000000000246 R12: 000055557cf03780
R13: 00007ffdf3c4c780 R14: 00007f226c66fcc0 R15: 0000000000000002
 </TASK>

Allocated by task 5994:
 kasan_save_stack+0x30/0x50 mm/kasan/common.c:57
 kasan_save_track+0x14/0x30 mm/kasan/common.c:78
 poison_kmalloc_redzone mm/kasan/common.c:398 [inline]
 __kasan_kmalloc+0xaa/0xb0 mm/kasan/common.c:415
 kasan_kmalloc include/linux/kasan.h:263 [inline]
 __do_kmalloc_node mm/slub.c:5334 [inline]
 __kmalloc_noprof+0x322/0x820 mm/slub.c:5359
 _kmalloc_noprof include/linux/slab.h:992 [inline]
 _kmalloc_array_noprof include/linux/slab.h:1208 [inline]
 font_data_rotate+0x353/0x3b0 lib/fonts/font_rotate.c:231
 fbcon_rotate_font+0x2bf/0x510 drivers/video/fbdev/core/fbcon_rotate.c:33
 fbcon_modechanged+0x218/0x7f0 drivers/video/fbdev/core/fbcon.c:2664
 fbcon_set_all_vcs+0x39b/0x470 drivers/video/fbdev/core/fbcon.c:2725
 fbcon_rotate_all drivers/video/fbdev/core/fbcon.c:254 [inline]
 rotate_all_store+0x31e/0x410 drivers/video/fbdev/core/fbcon.c:3218
 dev_attr_store+0x58/0x80 drivers/base/core.c:2505
 sysfs_kf_write+0xf2/0x150 fs/sysfs/file.c:145
 kernfs_fop_write_iter+0x3e0/0x5f0 fs/kernfs/file.c:345
 new_sync_write fs/read_write.c:595 [inline]
 vfs_write+0x6ac/0x1050 fs/read_write.c:687
 ksys_write+0x12a/0x250 fs/read_write.c:739
 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
 do_syscall_64+0x115/0x870 arch/x86/entry/syscall_64.c:94
 entry_SYSCALL_64_after_hwframe+0x77/0x7f

The buggy address belongs to the object at ffff8880559fa000
 which belongs to the cache kmalloc-4k of size 4096
The buggy address is located 512 bytes to the right of
 allocated 4096-byte region [ffff8880559fa000, ffff8880559fb000)

The buggy address belongs to the physical page:
page: refcount:0 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x559f8
head: order:3 mapcount:0 entire_mapcount:0 nr_pages_mapped:0 pincount:0
flags: 0xfff00000000040(head|node=0|zone=1|lastcpupid=0x7ff)
page_type: f5(slab)
raw: 00fff00000000040 ffff88801bc43040 dead000000000100 dead000000000122
raw: 0000000000000000 0000000800040004 00000000f5000000 0000000000000000
head: 00fff00000000040 ffff88801bc43040 dead000000000100 dead000000000122
head: 0000000000000000 0000000800040004 00000000f5000000 0000000000000000
head: 00fff00000000003 fffffffffffffe01 00000000ffffffff 00000000ffffffff
head: ffffffffffffffff 0000000000000000 00000000ffffffff 0000000000000008
page dumped because: kasan: bad access detected
page_owner tracks the page as allocated
page last allocated via order 3, migratetype Unmovable, gfp_mask 0xd2040(__GFP_IO|__GFP_NOWARN|__GFP_NORETRY|__GFP_COMP|__GFP_NOMEMALLOC), pid 6000, tgid 6000 (dhcpcd-run-hook), ts 75833354126, free_ts 75779299880
 set_page_owner include/linux/page_owner.h:32 [inline]
 post_alloc_hook+0xfd/0x120 mm/page_alloc.c:1859
 prep_new_page mm/page_alloc.c:1867 [inline]
 get_page_from_freelist+0xf48/0x3530 mm/page_alloc.c:3946
 __alloc_frozen_pages_noprof+0x299/0x2dc0 mm/page_alloc.c:5304
 alloc_slab_page mm/slub.c:3266 [inline]
 allocate_slab mm/slub.c:3380 [inline]
 new_slab+0xa2/0x640 mm/slub.c:3426
 refill_objects+0xe3/0x410 mm/slub.c:7310
 refill_sheaf mm/slub.c:2804 [inline]
 __pcs_replace_empty_main+0x376/0x680 mm/slub.c:4675
 alloc_from_pcs mm/slub.c:4773 [inline]
 slab_alloc_node mm/slub.c:4905 [inline]
 __kmalloc_cache_noprof+0x479/0x6c0 mm/slub.c:5485
 _kmalloc_noprof include/linux/slab.h:988 [inline]
 _kzalloc_noprof include/linux/slab.h:1309 [inline]
 tomoyo_dump_page+0x410/0x540 security/tomoyo/domain.c:916
 tomoyo_scan_bprm security/tomoyo/condition.c:130 [inline]
 tomoyo_condition+0x749/0x3b60 security/tomoyo/condition.c:1120
 tomoyo_check_acl+0x1b7/0x410 security/tomoyo/domain.c:177
 tomoyo_execute_permission+0x176/0x4b0 security/tomoyo/file.c:620
 tomoyo_find_next_domain+0x38d/0x2010 security/tomoyo/domain.c:763
 tomoyo_bprm_check_security security/tomoyo/tomoyo.c:102 [inline]
 tomoyo_bprm_check_security+0x12d/0x1d0 security/tomoyo/tomoyo.c:92
 security_bprm_check+0x87/0x1e0 security/security.c:820
 search_binary_handler fs/exec.c:1684 [inline]
 exec_binprm fs/exec.c:1726 [inline]
 bprm_execve fs/exec.c:1778 [inline]
 bprm_execve+0x84b/0x1730 fs/exec.c:1754
 do_execveat_common.isra.0+0x4a5/0x580 fs/exec.c:1876
page last free pid 5875 tgid 5875 stack trace:
 reset_page_owner include/linux/page_owner.h:25 [inline]
 __free_pages_prepare mm/page_alloc.c:1406 [inline]
 free_pages_prepare+0x586/0xd80 mm/page_alloc.c:1451
 __free_contig_range_common+0x14f/0x250 mm/page_alloc.c:6897
 __free_contig_range mm/page_alloc.c:6942 [inline]
 free_pages_bulk+0x12a/0x200 mm/page_alloc.c:5257
 vm_area_free_pages+0xad/0x2b0 mm/vmalloc.c:3461
 vfree mm/vmalloc.c:3510 [inline]
 vfree+0x107/0x750 mm/vmalloc.c:3484
 delayed_vfree_work+0x56/0x80 mm/vmalloc.c:3414
 process_one_work+0xa23/0x1940 kernel/workqueue.c:3322
 process_scheduled_works kernel/workqueue.c:3405 [inline]
 worker_thread+0x5ef/0xe50 kernel/workqueue.c:3486
 kthread+0x370/0x450 kernel/kthread.c:436
 ret_from_fork+0x72b/0xd50 arch/x86/kernel/process.c:158
 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245

Memory state around the buggy address:
 ffff8880559fb100: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
 ffff8880559fb180: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
>ffff8880559fb200: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
                   ^
 ffff8880559fb280: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
 ffff8880559fb300: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
==================================================================


---
This report is generated by a bot. It may contain errors.
See https://goo.gl/tpsmEJ for more information about syzbot.
syzbot engineers can be reached at [email protected].

syzbot will keep track of this issue. See:
https://goo.gl/tpsmEJ#status for how to communicate with syzbot.

If the report is already addressed, let syzbot know by replying with:
#syz fix: exact-commit-title

If you want syzbot to run the reproducer, reply with:
#syz test: git://repo/address.git branch-or-commit-hash
If you attach or paste a git patch, syzbot will apply it before testing.

If you want to overwrite report's subsystems, reply with:
#syz set subsystems: new-subsystem
(See the list of subsystem names on the web dashboard)

If the report is a duplicate of another one, reply with:
#syz dup: exact-subject-of-another-report

If you want to undo deduplication, reply with:
#syz undup
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.