syzbot


possible deadlock in tty_port_default_wakeup

Status: upstream: reported on 2024/03/19 22:08
Reported-by: syzbot+2fb1a0453669b9bd90e4@syzkaller.appspotmail.com
First crash: 45d, last: 37d
Similar bugs (2)
Kernel Title Repro Cause bisect Fix bisect Count Last Reported Patched Status
upstream possible deadlock in tty_port_default_wakeup serial 7 409d 524d 0/26 auto-obsoleted due to no activity on 2023/07/19 07:10
linux-5.15 possible deadlock in tty_port_default_wakeup 1 37d 37d 0/3 upstream: reported on 2024/03/27 07:34

Sample crash report:
=====================================================
WARNING: HARDIRQ-safe -> HARDIRQ-unsafe lock order detected
6.1.83-syzkaller #0 Not tainted
-----------------------------------------------------
syz-executor.2/8755 [HC0[0]:SC0[2]:HE0:SE0] is trying to acquire:
ffff88805f2faa40 (&stab->lock){+.-.}-{2:2}, at: __sock_map_delete net/core/sock_map.c:416 [inline]
ffff88805f2faa40 (&stab->lock){+.-.}-{2:2}, at: sock_map_delete_elem+0x97/0x130 net/core/sock_map.c:448

and this task is already holding:
ffff888022cc5158 (&port->lock){-.-.}-{2:2}, at: tty_insert_flip_string_and_push_buffer+0x3a/0x390 drivers/tty/tty_buffer.c:628
which would create a new lock dependency:
 (&port->lock){-.-.}-{2:2} -> (&stab->lock){+.-.}-{2:2}

but this new dependency connects a HARDIRQ-irq-safe lock:
 (&port->lock){-.-.}-{2:2}

... which became HARDIRQ-irq-safe at:
  lock_acquire+0x1f8/0x5a0 kernel/locking/lockdep.c:5662
  __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
  _raw_spin_lock_irqsave+0xd1/0x120 kernel/locking/spinlock.c:162
  tty_port_tty_get drivers/tty/tty_port.c:327 [inline]
  tty_port_default_wakeup+0x1f/0xf0 drivers/tty/tty_port.c:68
  serial8250_tx_chars+0x60d/0x800 drivers/tty/serial/8250/8250_port.c:1860
  serial8250_handle_irq+0x4ff/0x6a0 drivers/tty/serial/8250/8250_port.c:1967
  serial8250_default_handle_irq+0xc8/0x1e0 drivers/tty/serial/8250/8250_port.c:1987
  serial8250_interrupt+0xa1/0x1e0 drivers/tty/serial/8250/8250_core.c:126
  __handle_irq_event_percpu+0x2a8/0xb20 kernel/irq/handle.c:158
  handle_irq_event_percpu kernel/irq/handle.c:193 [inline]
  handle_irq_event+0x85/0x1e0 kernel/irq/handle.c:210
  handle_edge_irq+0x245/0xbf0 kernel/irq/chip.c:819
  generic_handle_irq_desc include/linux/irqdesc.h:158 [inline]
  handle_irq arch/x86/kernel/irq.c:231 [inline]
  __common_interrupt+0xd7/0x1f0 arch/x86/kernel/irq.c:250
  common_interrupt+0x9f/0xc0 arch/x86/kernel/irq.c:240
  asm_common_interrupt+0x22/0x40 arch/x86/include/asm/idtentry.h:644
  __raw_spin_unlock_irqrestore include/linux/spinlock_api_smp.h:152 [inline]
  _raw_spin_unlock_irqrestore+0xd4/0x130 kernel/locking/spinlock.c:194
  spin_unlock_irqrestore include/linux/spinlock.h:406 [inline]
  uart_write+0x6af/0x930 drivers/tty/serial/serial_core.c:600
  process_output_block drivers/tty/n_tty.c:586 [inline]
  n_tty_write+0xd7f/0x1260 drivers/tty/n_tty.c:2367
  do_tty_write drivers/tty/tty_io.c:1018 [inline]
  file_tty_write+0x504/0x890 drivers/tty/tty_io.c:1089
  call_write_iter include/linux/fs.h:2265 [inline]
  new_sync_write fs/read_write.c:491 [inline]
  vfs_write+0x7ae/0xba0 fs/read_write.c:584
  ksys_write+0x19c/0x2c0 fs/read_write.c:637
  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

to a HARDIRQ-irq-unsafe lock:
 (&stab->lock){+.-.}-{2:2}

... which became HARDIRQ-irq-unsafe at:
...
  lock_acquire+0x1f8/0x5a0 kernel/locking/lockdep.c:5662
  __raw_spin_lock_bh include/linux/spinlock_api_smp.h:126 [inline]
  _raw_spin_lock_bh+0x31/0x40 kernel/locking/spinlock.c:178
  __sock_map_delete net/core/sock_map.c:416 [inline]
  sock_map_delete_elem+0x97/0x130 net/core/sock_map.c:448
  bpf_prog_2c29ac5cdc6b1842+0x3a/0x3e
  bpf_dispatcher_nop_func include/linux/bpf.h:989 [inline]
  __bpf_prog_run include/linux/filter.h:603 [inline]
  bpf_prog_run include/linux/filter.h:610 [inline]
  __bpf_trace_run kernel/trace/bpf_trace.c:2273 [inline]
  bpf_trace_run4+0x253/0x470 kernel/trace/bpf_trace.c:2314
  __bpf_trace_mm_page_alloc+0xba/0xe0 include/trace/events/kmem.h:177
  trace_mm_page_alloc include/trace/events/kmem.h:177 [inline]
  __alloc_pages+0x717/0x770 mm/page_alloc.c:5567
  __folio_alloc+0xf/0x30 mm/page_alloc.c:5577
  vma_alloc_folio+0x486/0x990 mm/mempolicy.c:2243
  alloc_page_vma include/linux/gfp.h:284 [inline]
  do_anonymous_page mm/memory.c:4172 [inline]
  handle_pte_fault mm/memory.c:5011 [inline]
  __handle_mm_fault mm/memory.c:5155 [inline]
  handle_mm_fault+0x2e90/0x5340 mm/memory.c:5276
  do_user_addr_fault arch/x86/mm/fault.c:1371 [inline]
  handle_page_fault arch/x86/mm/fault.c:1462 [inline]
  exc_page_fault+0x26f/0x660 arch/x86/mm/fault.c:1518
  asm_exc_page_fault+0x22/0x30 arch/x86/include/asm/idtentry.h:570

other info that might help us debug this:

 Possible interrupt unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(&stab->lock);
                               local_irq_disable();
                               lock(&port->lock);
                               lock(&stab->lock);
  <Interrupt>
    lock(&port->lock);

 *** DEADLOCK ***

6 locks held by syz-executor.2/8755:
 #0: ffff888079795098 (&tty->ldisc_sem){++++}-{0:0}, at: tty_ldisc_ref_wait+0x21/0x70 drivers/tty/tty_ldisc.c:244
 #1: ffff888079795130 (&tty->atomic_write_lock){+.+.}-{3:3}, at: tty_write_lock drivers/tty/tty_io.c:944 [inline]
 #1: ffff888079795130 (&tty->atomic_write_lock){+.+.}-{3:3}, at: do_tty_write drivers/tty/tty_io.c:967 [inline]
 #1: ffff888079795130 (&tty->atomic_write_lock){+.+.}-{3:3}, at: file_tty_write+0x1f5/0x890 drivers/tty/tty_io.c:1089
 #2: ffff8880797952e8 (&tty->termios_rwsem){++++}-{3:3}, at: n_tty_write+0x25e/0x1260 drivers/tty/n_tty.c:2350
 #3: ffffc90007549380 (&ldata->output_lock){+.+.}-{3:3}, at: n_tty_write+0x5fa/0x1260 drivers/tty/n_tty.c:2389
 #4: ffff888022cc5158 (&port->lock){-.-.}-{2:2}, at: tty_insert_flip_string_and_push_buffer+0x3a/0x390 drivers/tty/tty_buffer.c:628
 #5: ffffffff8d12a940 (rcu_read_lock){....}-{1:2}, at: rcu_lock_acquire include/linux/rcupdate.h:350 [inline]
 #5: ffffffff8d12a940 (rcu_read_lock){....}-{1:2}, at: rcu_read_lock include/linux/rcupdate.h:791 [inline]
 #5: ffffffff8d12a940 (rcu_read_lock){....}-{1:2}, at: __bpf_trace_run kernel/trace/bpf_trace.c:2272 [inline]
 #5: ffffffff8d12a940 (rcu_read_lock){....}-{1:2}, at: bpf_trace_run4+0x16a/0x470 kernel/trace/bpf_trace.c:2314

the dependencies between HARDIRQ-irq-safe lock and the holding lock:
-> (&port->lock){-.-.}-{2:2} {
   IN-HARDIRQ-W at:
                    lock_acquire+0x1f8/0x5a0 kernel/locking/lockdep.c:5662
                    __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
                    _raw_spin_lock_irqsave+0xd1/0x120 kernel/locking/spinlock.c:162
                    tty_port_tty_get drivers/tty/tty_port.c:327 [inline]
                    tty_port_default_wakeup+0x1f/0xf0 drivers/tty/tty_port.c:68
                    serial8250_tx_chars+0x60d/0x800 drivers/tty/serial/8250/8250_port.c:1860
                    serial8250_handle_irq+0x4ff/0x6a0 drivers/tty/serial/8250/8250_port.c:1967
                    serial8250_default_handle_irq+0xc8/0x1e0 drivers/tty/serial/8250/8250_port.c:1987
                    serial8250_interrupt+0xa1/0x1e0 drivers/tty/serial/8250/8250_core.c:126
                    __handle_irq_event_percpu+0x2a8/0xb20 kernel/irq/handle.c:158
                    handle_irq_event_percpu kernel/irq/handle.c:193 [inline]
                    handle_irq_event+0x85/0x1e0 kernel/irq/handle.c:210
                    handle_edge_irq+0x245/0xbf0 kernel/irq/chip.c:819
                    generic_handle_irq_desc include/linux/irqdesc.h:158 [inline]
                    handle_irq arch/x86/kernel/irq.c:231 [inline]
                    __common_interrupt+0xd7/0x1f0 arch/x86/kernel/irq.c:250
                    common_interrupt+0x9f/0xc0 arch/x86/kernel/irq.c:240
                    asm_common_interrupt+0x22/0x40 arch/x86/include/asm/idtentry.h:644
                    __raw_spin_unlock_irqrestore include/linux/spinlock_api_smp.h:152 [inline]
                    _raw_spin_unlock_irqrestore+0xd4/0x130 kernel/locking/spinlock.c:194
                    spin_unlock_irqrestore include/linux/spinlock.h:406 [inline]
                    uart_write+0x6af/0x930 drivers/tty/serial/serial_core.c:600
                    process_output_block drivers/tty/n_tty.c:586 [inline]
                    n_tty_write+0xd7f/0x1260 drivers/tty/n_tty.c:2367
                    do_tty_write drivers/tty/tty_io.c:1018 [inline]
                    file_tty_write+0x504/0x890 drivers/tty/tty_io.c:1089
                    call_write_iter include/linux/fs.h:2265 [inline]
                    new_sync_write fs/read_write.c:491 [inline]
                    vfs_write+0x7ae/0xba0 fs/read_write.c:584
                    ksys_write+0x19c/0x2c0 fs/read_write.c:637
                    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
   IN-SOFTIRQ-W at:
                    lock_acquire+0x1f8/0x5a0 kernel/locking/lockdep.c:5662
                    __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
                    _raw_spin_lock_irqsave+0xd1/0x120 kernel/locking/spinlock.c:162
                    tty_port_tty_get drivers/tty/tty_port.c:327 [inline]
                    tty_port_default_wakeup+0x1f/0xf0 drivers/tty/tty_port.c:68
                    serial8250_tx_chars+0x60d/0x800 drivers/tty/serial/8250/8250_port.c:1860
                    serial8250_handle_irq+0x4ff/0x6a0 drivers/tty/serial/8250/8250_port.c:1967
                    serial8250_default_handle_irq+0xc8/0x1e0 drivers/tty/serial/8250/8250_port.c:1987
                    serial8250_interrupt+0xa1/0x1e0 drivers/tty/serial/8250/8250_core.c:126
                    __handle_irq_event_percpu+0x2a8/0xb20 kernel/irq/handle.c:158
                    handle_irq_event_percpu kernel/irq/handle.c:193 [inline]
                    handle_irq_event+0x85/0x1e0 kernel/irq/handle.c:210
                    handle_edge_irq+0x245/0xbf0 kernel/irq/chip.c:819
                    generic_handle_irq_desc include/linux/irqdesc.h:158 [inline]
                    handle_irq arch/x86/kernel/irq.c:231 [inline]
                    __common_interrupt+0xd7/0x1f0 arch/x86/kernel/irq.c:250
                    common_interrupt+0x4a/0xc0 arch/x86/kernel/irq.c:240
                    asm_common_interrupt+0x22/0x40 arch/x86/include/asm/idtentry.h:644
                    __raw_spin_unlock_irqrestore include/linux/spinlock_api_smp.h:152 [inline]
                    _raw_spin_unlock_irqrestore+0xd4/0x130 kernel/locking/spinlock.c:194
                    __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
                    rcu_do_batch kernel/rcu/tree.c:2296 [inline]
                    rcu_core+0xad4/0x17e0 kernel/rcu/tree.c:2556
                    __do_softirq+0x2e9/0xa4c kernel/softirq.c:571
                    invoke_softirq kernel/softirq.c:445 [inline]
                    __irq_exit_rcu+0x155/0x240 kernel/softirq.c:650
                    irq_exit_rcu+0x5/0x20 kernel/softirq.c:662
                    sysvec_apic_timer_interrupt+0x91/0xb0 arch/x86/kernel/apic/apic.c:1106
                    asm_sysvec_apic_timer_interrupt+0x16/0x20 arch/x86/include/asm/idtentry.h:653
                    clear_page_erms+0x7/0x10 arch/x86/lib/clear_page_64.S:49
                    clear_page arch/x86/include/asm/page_64.h:57 [inline]
                    clear_highpage include/linux/highmem.h:242 [inline]
                    clear_highpage_kasan_tagged include/linux/highmem.h:252 [inline]
                    kernel_init_pages mm/page_alloc.c:1377 [inline]
                    post_alloc_hook+0x145/0x1b0 mm/page_alloc.c:2508
                    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:5545
                    alloc_slab_page+0x6a/0x150 mm/slub.c:1794
                    allocate_slab mm/slub.c:1939 [inline]
                    new_slab+0x84/0x2d0 mm/slub.c:1992
                    ___slab_alloc+0xc20/0x1270 mm/slub.c:3180
                    __slab_alloc mm/slub.c:3279 [inline]
                    slab_alloc_node mm/slub.c:3364 [inline]
                    __kmem_cache_alloc_node+0x19f/0x260 mm/slub.c:3437
                    __do_kmalloc_node mm/slab_common.c:954 [inline]
                    __kmalloc_node_track_caller+0xa0/0x220 mm/slab_common.c:975
                    kmalloc_reserve net/core/skbuff.c:446 [inline]
                    __alloc_skb+0x135/0x670 net/core/skbuff.c:515
                    alloc_skb include/linux/skbuff.h:1276 [inline]
                    netlink_dump+0x1ed/0xc50 net/netlink/af_netlink.c:2198
                    __netlink_dump_start+0x541/0x6e0 net/netlink/af_netlink.c:2335
                    netlink_dump_start include/linux/netlink.h:269 [inline]
                    rtnetlink_rcv_msg+0xd4c/0xff0 net/core/rtnetlink.c:6077
                    netlink_rcv_skb+0x1cd/0x410 net/netlink/af_netlink.c:2508
                    netlink_unicast_kernel net/netlink/af_netlink.c:1326 [inline]
                    netlink_unicast+0x7d8/0x970 net/netlink/af_netlink.c:1352
                    netlink_sendmsg+0xa26/0xd60 net/netlink/af_netlink.c:1874
                    sock_sendmsg_nosec net/socket.c:718 [inline]
                    __sock_sendmsg net/socket.c:730 [inline]
                    __sys_sendto+0x480/0x600 net/socket.c:2148
                    __do_sys_sendto net/socket.c:2160 [inline]
                    __se_sys_sendto net/socket.c:2156 [inline]
                    __x64_sys_sendto+0xda/0xf0 net/socket.c:2156
                    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
   INITIAL USE at:
                   lock_acquire+0x1f8/0x5a0 kernel/locking/lockdep.c:5662
                   __raw_spin_lock_irq include/linux/spinlock_api_smp.h:119 [inline]
                   _raw_spin_lock_irq+0xcf/0x110 kernel/locking/spinlock.c:170
                   spin_lock_irq include/linux/spinlock.h:376 [inline]
                   tty_port_open+0x37/0x2c0 drivers/tty/tty_port.c:768
                   uart_open+0x43/0x50 drivers/tty/serial/serial_core.c:1938
                   tty_open+0x4c2/0xdd0 drivers/tty/tty_io.c:2145
                   chrdev_open+0x54a/0x630 fs/char_dev.c:414
                   do_dentry_open+0x7f9/0x10f0 fs/open.c:882
                   do_open fs/namei.c:3628 [inline]
                   path_openat+0x2644/0x2e60 fs/namei.c:3785
                   do_filp_open+0x230/0x480 fs/namei.c:3812
                   file_open_name fs/open.c:1263 [inline]
                   filp_open+0x25d/0x2c0 fs/open.c:1283
                   console_on_rootfs+0x19/0x5c init/main.c:1582
                   kernel_init_freeable+0x466/0x60f init/main.c:1630
                   kernel_init+0x19/0x290 init/main.c:1513
                   ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:307
 }
 ... key      at: [<ffffffff920155c0>] tty_port_init.__key.7+0x0/0x20

the dependencies between the lock to be acquired
 and HARDIRQ-irq-unsafe lock:
-> (&stab->lock){+.-.}-{2:2} {
   HARDIRQ-ON-W at:
                    lock_acquire+0x1f8/0x5a0 kernel/locking/lockdep.c:5662
                    __raw_spin_lock_bh include/linux/spinlock_api_smp.h:126 [inline]
                    _raw_spin_lock_bh+0x31/0x40 kernel/locking/spinlock.c:178
                    __sock_map_delete net/core/sock_map.c:416 [inline]
                    sock_map_delete_elem+0x97/0x130 net/core/sock_map.c:448
                    bpf_prog_2c29ac5cdc6b1842+0x3a/0x3e
                    bpf_dispatcher_nop_func include/linux/bpf.h:989 [inline]
                    __bpf_prog_run include/linux/filter.h:603 [inline]
                    bpf_prog_run include/linux/filter.h:610 [inline]
                    __bpf_trace_run kernel/trace/bpf_trace.c:2273 [inline]
                    bpf_trace_run4+0x253/0x470 kernel/trace/bpf_trace.c:2314
                    __bpf_trace_mm_page_alloc+0xba/0xe0 include/trace/events/kmem.h:177
                    trace_mm_page_alloc include/trace/events/kmem.h:177 [inline]
                    __alloc_pages+0x717/0x770 mm/page_alloc.c:5567
                    __folio_alloc+0xf/0x30 mm/page_alloc.c:5577
                    vma_alloc_folio+0x486/0x990 mm/mempolicy.c:2243
                    alloc_page_vma include/linux/gfp.h:284 [inline]
                    do_anonymous_page mm/memory.c:4172 [inline]
                    handle_pte_fault mm/memory.c:5011 [inline]
                    __handle_mm_fault mm/memory.c:5155 [inline]
                    handle_mm_fault+0x2e90/0x5340 mm/memory.c:5276
                    do_user_addr_fault arch/x86/mm/fault.c:1371 [inline]
                    handle_page_fault arch/x86/mm/fault.c:1462 [inline]
                    exc_page_fault+0x26f/0x660 arch/x86/mm/fault.c:1518
                    asm_exc_page_fault+0x22/0x30 arch/x86/include/asm/idtentry.h:570
   IN-SOFTIRQ-W at:
                    lock_acquire+0x1f8/0x5a0 kernel/locking/lockdep.c:5662
                    __raw_spin_lock_bh include/linux/spinlock_api_smp.h:126 [inline]
                    _raw_spin_lock_bh+0x31/0x40 kernel/locking/spinlock.c:178
                    __sock_map_delete net/core/sock_map.c:416 [inline]
                    sock_map_delete_elem+0x97/0x130 net/core/sock_map.c:448
                    bpf_prog_2c29ac5cdc6b1842+0x3a/0x3e
                    bpf_dispatcher_nop_func include/linux/bpf.h:989 [inline]
                    __bpf_prog_run include/linux/filter.h:603 [inline]
                    bpf_prog_run include/linux/filter.h:610 [inline]
                    __bpf_trace_run kernel/trace/bpf_trace.c:2273 [inline]
                    bpf_trace_run4+0x253/0x470 kernel/trace/bpf_trace.c:2314
                    __bpf_trace_mm_page_alloc+0xba/0xe0 include/trace/events/kmem.h:177
                    trace_mm_page_alloc include/trace/events/kmem.h:177 [inline]
                    __alloc_pages+0x717/0x770 mm/page_alloc.c:5567
                    __alloc_pages_node include/linux/gfp.h:237 [inline]
                    alloc_pages_node+0x127/0x1b0 include/linux/gfp.h:260
                    page_frag_alloc_1k net/core/skbuff.c:163 [inline]
                    __napi_alloc_skb+0x34b/0x520 net/core/skbuff.c:681
                    napi_alloc_skb include/linux/skbuff.h:3231 [inline]
                    page_to_skb+0x282/0xb60 drivers/net/virtio_net.c:501
                    receive_mergeable drivers/net/virtio_net.c:1128 [inline]
                    receive_buf+0x436/0x5520 drivers/net/virtio_net.c:1267
                    virtnet_receive drivers/net/virtio_net.c:1562 [inline]
                    virtnet_poll+0x6d3/0x1470 drivers/net/virtio_net.c:1680
                    __napi_poll+0xc7/0x470 net/core/dev.c:6537
                    napi_poll net/core/dev.c:6604 [inline]
                    net_rx_action+0x70f/0xeb0 net/core/dev.c:6718
                    __do_softirq+0x2e9/0xa4c kernel/softirq.c:571
                    run_ksoftirqd+0xc1/0x120 kernel/softirq.c:934
                    smpboot_thread_fn+0x52c/0xa30 kernel/smpboot.c:164
                    kthread+0x28d/0x320 kernel/kthread.c:376
                    ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:307
   INITIAL USE at:
                   lock_acquire+0x1f8/0x5a0 kernel/locking/lockdep.c:5662
                   __raw_spin_lock_bh include/linux/spinlock_api_smp.h:126 [inline]
                   _raw_spin_lock_bh+0x31/0x40 kernel/locking/spinlock.c:178
                   __sock_map_delete net/core/sock_map.c:416 [inline]
                   sock_map_delete_elem+0x97/0x130 net/core/sock_map.c:448
                   bpf_prog_2c29ac5cdc6b1842+0x3a/0x3e
                   bpf_dispatcher_nop_func include/linux/bpf.h:989 [inline]
                   __bpf_prog_run include/linux/filter.h:603 [inline]
                   bpf_prog_run include/linux/filter.h:610 [inline]
                   __bpf_trace_run kernel/trace/bpf_trace.c:2273 [inline]
                   bpf_trace_run4+0x253/0x470 kernel/trace/bpf_trace.c:2314
                   __bpf_trace_mm_page_alloc+0xba/0xe0 include/trace/events/kmem.h:177
                   trace_mm_page_alloc include/trace/events/kmem.h:177 [inline]
                   __alloc_pages+0x717/0x770 mm/page_alloc.c:5567
                   __folio_alloc+0xf/0x30 mm/page_alloc.c:5577
                   vma_alloc_folio+0x486/0x990 mm/mempolicy.c:2243
                   alloc_page_vma include/linux/gfp.h:284 [inline]
                   do_anonymous_page mm/memory.c:4172 [inline]
                   handle_pte_fault mm/memory.c:5011 [inline]
                   __handle_mm_fault mm/memory.c:5155 [inline]
                   handle_mm_fault+0x2e90/0x5340 mm/memory.c:5276
                   do_user_addr_fault arch/x86/mm/fault.c:1371 [inline]
                   handle_page_fault arch/x86/mm/fault.c:1462 [inline]
                   exc_page_fault+0x26f/0x660 arch/x86/mm/fault.c:1518
                   asm_exc_page_fault+0x22/0x30 arch/x86/include/asm/idtentry.h:570
 }
 ... key      at: [<ffffffff920b02e0>] sock_map_alloc.__key+0x0/0x20
 ... acquired at:
   lock_acquire+0x1f8/0x5a0 kernel/locking/lockdep.c:5662
   __raw_spin_lock_bh include/linux/spinlock_api_smp.h:126 [inline]
   _raw_spin_lock_bh+0x31/0x40 kernel/locking/spinlock.c:178
   __sock_map_delete net/core/sock_map.c:416 [inline]
   sock_map_delete_elem+0x97/0x130 net/core/sock_map.c:448
   bpf_prog_2c29ac5cdc6b1842+0x3a/0x3e
   bpf_dispatcher_nop_func include/linux/bpf.h:989 [inline]
   __bpf_prog_run include/linux/filter.h:603 [inline]
   bpf_prog_run include/linux/filter.h:610 [inline]
   __bpf_trace_run kernel/trace/bpf_trace.c:2273 [inline]
   bpf_trace_run4+0x253/0x470 kernel/trace/bpf_trace.c:2314
   __bpf_trace_mm_page_alloc+0xba/0xe0 include/trace/events/kmem.h:177
   trace_mm_page_alloc include/trace/events/kmem.h:177 [inline]
   __alloc_pages+0x717/0x770 mm/page_alloc.c:5567
   alloc_slab_page+0x6a/0x150 mm/slub.c:1794
   allocate_slab mm/slub.c:1939 [inline]
   new_slab+0x84/0x2d0 mm/slub.c:1992
   ___slab_alloc+0xc20/0x1270 mm/slub.c:3180
   __slab_alloc mm/slub.c:3279 [inline]
   slab_alloc_node mm/slub.c:3364 [inline]
   __kmem_cache_alloc_node+0x19f/0x260 mm/slub.c:3437
   __do_kmalloc_node mm/slab_common.c:954 [inline]
   __kmalloc+0xa1/0x230 mm/slab_common.c:968
   kmalloc include/linux/slab.h:561 [inline]
   tty_buffer_alloc drivers/tty/tty_buffer.c:180 [inline]
   __tty_buffer_request_room+0x1f1/0x470 drivers/tty/tty_buffer.c:278
   tty_insert_flip_string_fixed_flag drivers/tty/tty_buffer.c:327 [inline]
   tty_insert_flip_string include/linux/tty_flip.h:41 [inline]
   tty_insert_flip_string_and_push_buffer+0x7c/0x390 drivers/tty/tty_buffer.c:629
   n_tty_write+0x63e/0x1260 drivers/tty/n_tty.c:2390
   do_tty_write drivers/tty/tty_io.c:1018 [inline]
   file_tty_write+0x504/0x890 drivers/tty/tty_io.c:1089
   call_write_iter include/linux/fs.h:2265 [inline]
   new_sync_write fs/read_write.c:491 [inline]
   vfs_write+0x7ae/0xba0 fs/read_write.c:584
   ksys_write+0x19c/0x2c0 fs/read_write.c:637
   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


stack backtrace:
CPU: 1 PID: 8755 Comm: syz-executor.2 Not tainted 6.1.83-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 02/29/2024
Call Trace:
 <TASK>
 __dump_stack lib/dump_stack.c:88 [inline]
 dump_stack_lvl+0x1e3/0x2cb lib/dump_stack.c:106
 print_bad_irq_dependency kernel/locking/lockdep.c:2604 [inline]
 check_irq_usage kernel/locking/lockdep.c:2843 [inline]
 check_prev_add kernel/locking/lockdep.c:3094 [inline]
 check_prevs_add kernel/locking/lockdep.c:3209 [inline]
 validate_chain+0x4d16/0x5950 kernel/locking/lockdep.c:3825
 __lock_acquire+0x125b/0x1f80 kernel/locking/lockdep.c:5049
 lock_acquire+0x1f8/0x5a0 kernel/locking/lockdep.c:5662
 __raw_spin_lock_bh include/linux/spinlock_api_smp.h:126 [inline]
 _raw_spin_lock_bh+0x31/0x40 kernel/locking/spinlock.c:178
 __sock_map_delete net/core/sock_map.c:416 [inline]
 sock_map_delete_elem+0x97/0x130 net/core/sock_map.c:448
 bpf_prog_2c29ac5cdc6b1842+0x3a/0x3e
 bpf_dispatcher_nop_func include/linux/bpf.h:989 [inline]
 __bpf_prog_run include/linux/filter.h:603 [inline]
 bpf_prog_run include/linux/filter.h:610 [inline]
 __bpf_trace_run kernel/trace/bpf_trace.c:2273 [inline]
 bpf_trace_run4+0x253/0x470 kernel/trace/bpf_trace.c:2314
 __bpf_trace_mm_page_alloc+0xba/0xe0 include/trace/events/kmem.h:177
 trace_mm_page_alloc include/trace/events/kmem.h:177 [inline]
 __alloc_pages+0x717/0x770 mm/page_alloc.c:5567
 alloc_slab_page+0x6a/0x150 mm/slub.c:1794
 allocate_slab mm/slub.c:1939 [inline]
 new_slab+0x84/0x2d0 mm/slub.c:1992
 ___slab_alloc+0xc20/0x1270 mm/slub.c:3180
 __slab_alloc mm/slub.c:3279 [inline]
 slab_alloc_node mm/slub.c:3364 [inline]
 __kmem_cache_alloc_node+0x19f/0x260 mm/slub.c:3437
 __do_kmalloc_node mm/slab_common.c:954 [inline]
 __kmalloc+0xa1/0x230 mm/slab_common.c:968
 kmalloc include/linux/slab.h:561 [inline]
 tty_buffer_alloc drivers/tty/tty_buffer.c:180 [inline]
 __tty_buffer_request_room+0x1f1/0x470 drivers/tty/tty_buffer.c:278
 tty_insert_flip_string_fixed_flag drivers/tty/tty_buffer.c:327 [inline]
 tty_insert_flip_string include/linux/tty_flip.h:41 [inline]
 tty_insert_flip_string_and_push_buffer+0x7c/0x390 drivers/tty/tty_buffer.c:629
 n_tty_write+0x63e/0x1260 drivers/tty/n_tty.c:2390
 do_tty_write drivers/tty/tty_io.c:1018 [inline]
 file_tty_write+0x504/0x890 drivers/tty/tty_io.c:1089
 call_write_iter include/linux/fs.h:2265 [inline]
 new_sync_write fs/read_write.c:491 [inline]
 vfs_write+0x7ae/0xba0 fs/read_write.c:584
 ksys_write+0x19c/0x2c0 fs/read_write.c:637
 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:0x7f99e807dda9
Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 e1 20 00 00 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b0 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007f99e8da60c8 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
RAX: ffffffffffffffda RBX: 00007f99e81abf80 RCX: 00007f99e807dda9
RDX: 000000000000ff2e RSI: 0000000020000000 RDI: 0000000000000005
RBP: 00007f99e80ca47a R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
R13: 000000000000000b R14: 00007f99e81abf80 R15: 00007ffdbb3c56d8
 </TASK>
------------[ cut here ]------------
raw_local_irq_restore() called with IRQs enabled
WARNING: CPU: 1 PID: 8755 at kernel/locking/irqflag-debug.c:10 warn_bogus_irq_restore+0x1d/0x20 kernel/locking/irqflag-debug.c:10
Modules linked in:
CPU: 1 PID: 8755 Comm: syz-executor.2 Not tainted 6.1.83-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 02/29/2024
RIP: 0010:warn_bogus_irq_restore+0x1d/0x20 kernel/locking/irqflag-debug.c:10
Code: 24 48 c7 c7 80 bb ea 8a e8 6c f5 fd ff 80 3d af 86 d5 03 00 74 01 c3 c6 05 a5 86 d5 03 01 48 c7 c7 e0 e5 eb 8a e8 23 94 c8 f6 <0f> 0b c3 41 56 53 48 83 ec 10 65 48 8b 04 25 28 00 00 00 48 89 44
RSP: 0018:ffffc90005ad7978 EFLAGS: 00010246
RAX: a8edac5c7c18ae00 RBX: 1ffff92000b5af34 RCX: 0000000000040000
RDX: ffffc900115b6000 RSI: 000000000003ffff RDI: 0000000000040000
RBP: ffffc90005ad7a08 R08: ffffffff81527eae R09: fffffbfff1a23db1
R10: 0000000000000000 R11: dffffc0000000001 R12: dffffc0000000000
R13: 1ffff92000b5af30 R14: ffffc90005ad79a0 R15: 0000000000000246
FS:  00007f99e8da66c0(0000) GS:ffff8880b9900000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000000020005000 CR3: 0000000018658000 CR4: 00000000003506e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
 <TASK>
 __raw_spin_unlock_irqrestore include/linux/spinlock_api_smp.h:151 [inline]
 _raw_spin_unlock_irqrestore+0x118/0x130 kernel/locking/spinlock.c:194
 spin_unlock_irqrestore include/linux/spinlock.h:406 [inline]
 tty_insert_flip_string_and_push_buffer+0x2f3/0x390 drivers/tty/tty_buffer.c:632
 n_tty_write+0x63e/0x1260 drivers/tty/n_tty.c:2390
 do_tty_write drivers/tty/tty_io.c:1018 [inline]
 file_tty_write+0x504/0x890 drivers/tty/tty_io.c:1089
 call_write_iter include/linux/fs.h:2265 [inline]
 new_sync_write fs/read_write.c:491 [inline]
 vfs_write+0x7ae/0xba0 fs/read_write.c:584
 ksys_write+0x19c/0x2c0 fs/read_write.c:637
 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:0x7f99e807dda9
Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 e1 20 00 00 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b0 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007f99e8da60c8 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
RAX: ffffffffffffffda RBX: 00007f99e81abf80 RCX: 00007f99e807dda9
RDX: 000000000000ff2e RSI: 0000000020000000 RDI: 0000000000000005
RBP: 00007f99e80ca47a R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
R13: 000000000000000b R14: 00007f99e81abf80 R15: 00007ffdbb3c56d8
 </TASK>

Crashes (3):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2024/03/27 07:29 linux-6.1.y e5cd595e23c1 454571b6 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan possible deadlock in tty_port_default_wakeup
2024/03/21 18:31 linux-6.1.y d7543167affd 7a239ce7 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan possible deadlock in tty_port_default_wakeup
2024/03/19 22:07 linux-6.1.y d7543167affd e104824c .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan possible deadlock in tty_port_default_wakeup
* Struck through repros no longer work on HEAD.