syzbot


possible deadlock in serial8250_console_write

Status: auto-obsoleted due to no activity on 2024/09/20 20:42
Subsystems: hams
[Documentation on labels]
Reported-by: syzbot+8e03da5d64bc85098811@syzkaller.appspotmail.com
First crash: 265d, last: 193d
Discussions (4)
Title Replies (including bot) Last reply
[PATCH net,v3] net: hams: Fix deadlock caused by unsafe-irq lock in sp_get() 4 (4) 2024/04/22 13:04
[PATCH] hams: Fix deadlock caused by unsafe-irq lock in sp_get() 2 (2) 2024/04/22 12:47
[syzbot] [hams?] possible deadlock in serial8250_console_write 1 (3) 2024/04/20 06:09
[PATCH v2] net: hams: Fix deadlock caused by unsafe-irq lock in sp_get() 1 (1) 2024/04/19 17:43
Similar bugs (1)
Kernel Title Repro Cause bisect Fix bisect Count Last Reported Patched Status
android-414 possible deadlock in serial8250_console_write 1 2204d 2080d 0/1 auto-closed as invalid on 2019/06/08 21:57

Sample crash report:
=====================================================
WARNING: HARDIRQ-safe -> HARDIRQ-unsafe lock order detected
6.10.0-rc3-syzkaller-00022-gcea2a26553ac #0 Not tainted
-----------------------------------------------------
kworker/u8:12/6237 [HC0[0]:SC0[0]:HE0:SE1] is trying to acquire:
ffffffff8ec3f2d8 (disc_data_lock#3){.+.+}-{2:2}, at: sp_get+0x18/0xf0 drivers/net/hamradio/6pack.c:376

and this task is already holding:
ffffffff94de0f78 (&port_lock_key){-.-.}-{2:2}, at: uart_port_lock_irqsave include/linux/serial_core.h:618 [inline]
ffffffff94de0f78 (&port_lock_key){-.-.}-{2:2}, at: uart_write+0x134/0x3e0 drivers/tty/serial/serial_core.c:624
which would create a new lock dependency:
 (&port_lock_key){-.-.}-{2:2} -> (disc_data_lock#3){.+.+}-{2:2}

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

... which became HARDIRQ-irq-safe at:
  lock_acquire kernel/locking/lockdep.c:5754 [inline]
  lock_acquire+0x1b1/0x560 kernel/locking/lockdep.c:5719
  __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
  _raw_spin_lock_irqsave+0x3a/0x60 kernel/locking/spinlock.c:162
  uart_port_lock_irqsave include/linux/serial_core.h:618 [inline]
  serial8250_console_write+0xaa6/0x1090 drivers/tty/serial/8250/8250_port.c:3352
  console_emit_next_record kernel/printk/printk.c:2928 [inline]
  console_flush_all+0x53c/0xd70 kernel/printk/printk.c:2994
  console_unlock+0xae/0x290 kernel/printk/printk.c:3063
  vprintk_emit kernel/printk/printk.c:2345 [inline]
  vprintk_emit+0x11a/0x5a0 kernel/printk/printk.c:2300
  vprintk+0x7f/0xa0 kernel/printk/printk_safe.c:45
  _printk+0xc8/0x100 kernel/printk/printk.c:2370
  vkms_vblank_simulate+0xd4/0x3e0 drivers/gpu/drm/vkms/vkms_crtc.c:26
  __run_hrtimer kernel/time/hrtimer.c:1687 [inline]
  __hrtimer_run_queues+0x20c/0xcc0 kernel/time/hrtimer.c:1751
  hrtimer_interrupt+0x31b/0x800 kernel/time/hrtimer.c:1813
  local_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1032 [inline]
  __sysvec_apic_timer_interrupt+0x10f/0x450 arch/x86/kernel/apic/apic.c:1049
  instr_sysvec_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1043 [inline]
  sysvec_apic_timer_interrupt+0x43/0xb0 arch/x86/kernel/apic/apic.c:1043
  asm_sysvec_apic_timer_interrupt+0x1a/0x20 arch/x86/include/asm/idtentry.h:702
  lock_acquire+0x1f2/0x560 kernel/locking/lockdep.c:5722
  rcu_lock_acquire include/linux/rcupdate.h:329 [inline]
  rcu_do_batch kernel/rcu/tree.c:2529 [inline]
  rcu_core+0x7e0/0x16b0 kernel/rcu/tree.c:2809
  handle_softirqs+0x216/0x8f0 kernel/softirq.c:554
  __do_softirq kernel/softirq.c:588 [inline]
  invoke_softirq kernel/softirq.c:428 [inline]
  __irq_exit_rcu kernel/softirq.c:637 [inline]
  irq_exit_rcu+0xbb/0x120 kernel/softirq.c:649
  instr_sysvec_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1043 [inline]
  sysvec_apic_timer_interrupt+0x95/0xb0 arch/x86/kernel/apic/apic.c:1043
  asm_sysvec_apic_timer_interrupt+0x1a/0x20 arch/x86/include/asm/idtentry.h:702
  __raw_spin_unlock_irqrestore include/linux/spinlock_api_smp.h:151 [inline]
  _raw_spin_unlock_irqrestore+0x31/0x80 kernel/locking/spinlock.c:194
  spin_unlock_irqrestore include/linux/spinlock.h:406 [inline]
  ida_alloc_range+0x417/0x830 lib/idr.c:453
  ida_alloc include/linux/idr.h:275 [inline]
  blk_alloc_queue+0x8e/0x760 block/blk-core.c:409
  blk_mq_alloc_queue+0xc7/0x1a0 block/blk-mq.c:4124
  scsi_alloc_sdev+0x881/0xd90 drivers/scsi/scsi_scan.c:337
  scsi_probe_and_add_lun+0x789/0xda0 drivers/scsi/scsi_scan.c:1211
  __scsi_scan_target+0x1ea/0x580 drivers/scsi/scsi_scan.c:1758
  scsi_scan_channel drivers/scsi/scsi_scan.c:1846 [inline]
  scsi_scan_channel+0x149/0x1e0 drivers/scsi/scsi_scan.c:1822
  scsi_scan_host_selected+0x302/0x400 drivers/scsi/scsi_scan.c:1875
  do_scsi_scan_host+0x1ef/0x260 drivers/scsi/scsi_scan.c:2014
  do_scan_async+0x44/0x540 drivers/scsi/scsi_scan.c:2024
  async_run_entry_fn+0x9c/0x530 kernel/async.c:129
  process_one_work+0x9fb/0x1b60 kernel/workqueue.c:3231
  process_scheduled_works kernel/workqueue.c:3312 [inline]
  worker_thread+0x6c8/0xf70 kernel/workqueue.c:3393
  kthread+0x2c1/0x3a0 kernel/kthread.c:389
  ret_from_fork+0x45/0x80 arch/x86/kernel/process.c:147
  ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244

to a HARDIRQ-irq-unsafe lock:
 (disc_data_lock#3){.+.+}-{2:2}

... which became HARDIRQ-irq-unsafe at:
...
  lock_acquire kernel/locking/lockdep.c:5754 [inline]
  lock_acquire+0x1b1/0x560 kernel/locking/lockdep.c:5719
  __raw_read_lock include/linux/rwlock_api_smp.h:150 [inline]
  _raw_read_lock+0x5f/0x70 kernel/locking/spinlock.c:228
  sp_get+0x18/0xf0 drivers/net/hamradio/6pack.c:376
  sixpack_receive_buf drivers/net/hamradio/6pack.c:439 [inline]
  sixpack_receive_buf+0x59/0x1c90 drivers/net/hamradio/6pack.c:430
  tty_ldisc_receive_buf+0x153/0x190 drivers/tty/tty_buffer.c:391
  tty_port_default_receive_buf+0x70/0xb0 drivers/tty/tty_port.c:37
  receive_buf drivers/tty/tty_buffer.c:445 [inline]
  flush_to_ldisc+0x264/0x780 drivers/tty/tty_buffer.c:495
  process_one_work+0x9fb/0x1b60 kernel/workqueue.c:3231
  process_scheduled_works kernel/workqueue.c:3312 [inline]
  worker_thread+0x6c8/0xf70 kernel/workqueue.c:3393
  kthread+0x2c1/0x3a0 kernel/kthread.c:389
  ret_from_fork+0x45/0x80 arch/x86/kernel/process.c:147
  ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244

other info that might help us debug this:

 Possible interrupt unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(disc_data_lock#3);
                               local_irq_disable();
                               lock(&port_lock_key);
                               lock(disc_data_lock#3);
  <Interrupt>
    lock(&port_lock_key);

 *** DEADLOCK ***

6 locks held by kworker/u8:12/6237:
 #0: ffff888015489148 ((wq_completion)events_unbound){+.+.}-{0:0}, at: process_one_work+0x12bf/0x1b60 kernel/workqueue.c:3206
 #1: ffffc90003347d80 ((work_completion)(&buf->work)){+.+.}-{0:0}, at: process_one_work+0x957/0x1b60 kernel/workqueue.c:3207
 #2: ffff88801fad0ca0 (&buf->lock){+.+.}-{3:3}, at: flush_to_ldisc+0x31/0x780 drivers/tty/tty_buffer.c:467
 #3: ffff88805e9fb0a0 (&tty->ldisc_sem){++++}-{0:0}, at: tty_ldisc_ref+0x1c/0x80 drivers/tty/tty_ldisc.c:263
 #4: ffffffff94de0f78 (&port_lock_key){-.-.}-{2:2}, at: uart_port_lock_irqsave include/linux/serial_core.h:618 [inline]
 #4: ffffffff94de0f78 (&port_lock_key){-.-.}-{2:2}, at: uart_write+0x134/0x3e0 drivers/tty/serial/serial_core.c:624
 #5: ffff88805e9fb0a0 (&tty->ldisc_sem){++++}-{0:0}, at: tty_ldisc_ref+0x1c/0x80 drivers/tty/tty_ldisc.c:263

the dependencies between HARDIRQ-irq-safe lock and the holding lock:
-> (&port_lock_key){-.-.}-{2:2} {
   IN-HARDIRQ-W at:
                    lock_acquire kernel/locking/lockdep.c:5754 [inline]
                    lock_acquire+0x1b1/0x560 kernel/locking/lockdep.c:5719
                    __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
                    _raw_spin_lock_irqsave+0x3a/0x60 kernel/locking/spinlock.c:162
                    uart_port_lock_irqsave include/linux/serial_core.h:618 [inline]
                    serial8250_console_write+0xaa6/0x1090 drivers/tty/serial/8250/8250_port.c:3352
                    console_emit_next_record kernel/printk/printk.c:2928 [inline]
                    console_flush_all+0x53c/0xd70 kernel/printk/printk.c:2994
                    console_unlock+0xae/0x290 kernel/printk/printk.c:3063
                    vprintk_emit kernel/printk/printk.c:2345 [inline]
                    vprintk_emit+0x11a/0x5a0 kernel/printk/printk.c:2300
                    vprintk+0x7f/0xa0 kernel/printk/printk_safe.c:45
                    _printk+0xc8/0x100 kernel/printk/printk.c:2370
                    vkms_vblank_simulate+0xd4/0x3e0 drivers/gpu/drm/vkms/vkms_crtc.c:26
                    __run_hrtimer kernel/time/hrtimer.c:1687 [inline]
                    __hrtimer_run_queues+0x20c/0xcc0 kernel/time/hrtimer.c:1751
                    hrtimer_interrupt+0x31b/0x800 kernel/time/hrtimer.c:1813
                    local_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1032 [inline]
                    __sysvec_apic_timer_interrupt+0x10f/0x450 arch/x86/kernel/apic/apic.c:1049
                    instr_sysvec_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1043 [inline]
                    sysvec_apic_timer_interrupt+0x43/0xb0 arch/x86/kernel/apic/apic.c:1043
                    asm_sysvec_apic_timer_interrupt+0x1a/0x20 arch/x86/include/asm/idtentry.h:702
                    lock_acquire+0x1f2/0x560 kernel/locking/lockdep.c:5722
                    rcu_lock_acquire include/linux/rcupdate.h:329 [inline]
                    rcu_do_batch kernel/rcu/tree.c:2529 [inline]
                    rcu_core+0x7e0/0x16b0 kernel/rcu/tree.c:2809
                    handle_softirqs+0x216/0x8f0 kernel/softirq.c:554
                    __do_softirq kernel/softirq.c:588 [inline]
                    invoke_softirq kernel/softirq.c:428 [inline]
                    __irq_exit_rcu kernel/softirq.c:637 [inline]
                    irq_exit_rcu+0xbb/0x120 kernel/softirq.c:649
                    instr_sysvec_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1043 [inline]
                    sysvec_apic_timer_interrupt+0x95/0xb0 arch/x86/kernel/apic/apic.c:1043
                    asm_sysvec_apic_timer_interrupt+0x1a/0x20 arch/x86/include/asm/idtentry.h:702
                    __raw_spin_unlock_irqrestore include/linux/spinlock_api_smp.h:151 [inline]
                    _raw_spin_unlock_irqrestore+0x31/0x80 kernel/locking/spinlock.c:194
                    spin_unlock_irqrestore include/linux/spinlock.h:406 [inline]
                    ida_alloc_range+0x417/0x830 lib/idr.c:453
                    ida_alloc include/linux/idr.h:275 [inline]
                    blk_alloc_queue+0x8e/0x760 block/blk-core.c:409
                    blk_mq_alloc_queue+0xc7/0x1a0 block/blk-mq.c:4124
                    scsi_alloc_sdev+0x881/0xd90 drivers/scsi/scsi_scan.c:337
                    scsi_probe_and_add_lun+0x789/0xda0 drivers/scsi/scsi_scan.c:1211
                    __scsi_scan_target+0x1ea/0x580 drivers/scsi/scsi_scan.c:1758
                    scsi_scan_channel drivers/scsi/scsi_scan.c:1846 [inline]
                    scsi_scan_channel+0x149/0x1e0 drivers/scsi/scsi_scan.c:1822
                    scsi_scan_host_selected+0x302/0x400 drivers/scsi/scsi_scan.c:1875
                    do_scsi_scan_host+0x1ef/0x260 drivers/scsi/scsi_scan.c:2014
                    do_scan_async+0x44/0x540 drivers/scsi/scsi_scan.c:2024
                    async_run_entry_fn+0x9c/0x530 kernel/async.c:129
                    process_one_work+0x9fb/0x1b60 kernel/workqueue.c:3231
                    process_scheduled_works kernel/workqueue.c:3312 [inline]
                    worker_thread+0x6c8/0xf70 kernel/workqueue.c:3393
                    kthread+0x2c1/0x3a0 kernel/kthread.c:389
                    ret_from_fork+0x45/0x80 arch/x86/kernel/process.c:147
                    ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
   IN-SOFTIRQ-W at:
                    lock_acquire kernel/locking/lockdep.c:5754 [inline]
                    lock_acquire+0x1b1/0x560 kernel/locking/lockdep.c:5719
                    __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
                    _raw_spin_lock_irqsave+0x3a/0x60 kernel/locking/spinlock.c:162
                    uart_port_lock_irqsave include/linux/serial_core.h:618 [inline]
                    serial8250_console_write+0xaa6/0x1090 drivers/tty/serial/8250/8250_port.c:3352
                    console_emit_next_record kernel/printk/printk.c:2928 [inline]
                    console_flush_all+0x53c/0xd70 kernel/printk/printk.c:2994
                    console_unlock+0xae/0x290 kernel/printk/printk.c:3063
                    vprintk_emit kernel/printk/printk.c:2345 [inline]
                    vprintk_emit+0x11a/0x5a0 kernel/printk/printk.c:2300
                    vprintk+0x7f/0xa0 kernel/printk/printk_safe.c:45
                    _printk+0xc8/0x100 kernel/printk/printk.c:2370
                    vkms_vblank_simulate+0xd4/0x3e0 drivers/gpu/drm/vkms/vkms_crtc.c:26
                    __run_hrtimer kernel/time/hrtimer.c:1687 [inline]
                    __hrtimer_run_queues+0x20c/0xcc0 kernel/time/hrtimer.c:1751
                    hrtimer_interrupt+0x31b/0x800 kernel/time/hrtimer.c:1813
                    local_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1032 [inline]
                    __sysvec_apic_timer_interrupt+0x10f/0x450 arch/x86/kernel/apic/apic.c:1049
                    instr_sysvec_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1043 [inline]
                    sysvec_apic_timer_interrupt+0x43/0xb0 arch/x86/kernel/apic/apic.c:1043
                    asm_sysvec_apic_timer_interrupt+0x1a/0x20 arch/x86/include/asm/idtentry.h:702
                    lock_acquire+0x1f2/0x560 kernel/locking/lockdep.c:5722
                    rcu_lock_acquire include/linux/rcupdate.h:329 [inline]
                    rcu_do_batch kernel/rcu/tree.c:2529 [inline]
                    rcu_core+0x7e0/0x16b0 kernel/rcu/tree.c:2809
                    handle_softirqs+0x216/0x8f0 kernel/softirq.c:554
                    __do_softirq kernel/softirq.c:588 [inline]
                    invoke_softirq kernel/softirq.c:428 [inline]
                    __irq_exit_rcu kernel/softirq.c:637 [inline]
                    irq_exit_rcu+0xbb/0x120 kernel/softirq.c:649
                    instr_sysvec_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1043 [inline]
                    sysvec_apic_timer_interrupt+0x95/0xb0 arch/x86/kernel/apic/apic.c:1043
                    asm_sysvec_apic_timer_interrupt+0x1a/0x20 arch/x86/include/asm/idtentry.h:702
                    __raw_spin_unlock_irqrestore include/linux/spinlock_api_smp.h:151 [inline]
                    _raw_spin_unlock_irqrestore+0x31/0x80 kernel/locking/spinlock.c:194
                    spin_unlock_irqrestore include/linux/spinlock.h:406 [inline]
                    ida_alloc_range+0x417/0x830 lib/idr.c:453
                    ida_alloc include/linux/idr.h:275 [inline]
                    blk_alloc_queue+0x8e/0x760 block/blk-core.c:409
                    blk_mq_alloc_queue+0xc7/0x1a0 block/blk-mq.c:4124
                    scsi_alloc_sdev+0x881/0xd90 drivers/scsi/scsi_scan.c:337
                    scsi_probe_and_add_lun+0x789/0xda0 drivers/scsi/scsi_scan.c:1211
                    __scsi_scan_target+0x1ea/0x580 drivers/scsi/scsi_scan.c:1758
                    scsi_scan_channel drivers/scsi/scsi_scan.c:1846 [inline]
                    scsi_scan_channel+0x149/0x1e0 drivers/scsi/scsi_scan.c:1822
                    scsi_scan_host_selected+0x302/0x400 drivers/scsi/scsi_scan.c:1875
                    do_scsi_scan_host+0x1ef/0x260 drivers/scsi/scsi_scan.c:2014
                    do_scan_async+0x44/0x540 drivers/scsi/scsi_scan.c:2024
                    async_run_entry_fn+0x9c/0x530 kernel/async.c:129
                    process_one_work+0x9fb/0x1b60 kernel/workqueue.c:3231
                    process_scheduled_works kernel/workqueue.c:3312 [inline]
                    worker_thread+0x6c8/0xf70 kernel/workqueue.c:3393
                    kthread+0x2c1/0x3a0 kernel/kthread.c:389
                    ret_from_fork+0x45/0x80 arch/x86/kernel/process.c:147
                    ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
   INITIAL USE at:
                   lock_acquire kernel/locking/lockdep.c:5754 [inline]
                   lock_acquire+0x1b1/0x560 kernel/locking/lockdep.c:5719
                   __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
                   _raw_spin_lock_irqsave+0x3a/0x60 kernel/locking/spinlock.c:162
                   uart_port_lock_irqsave include/linux/serial_core.h:618 [inline]
                   serial8250_do_set_termios+0x334/0x1270 drivers/tty/serial/8250/8250_port.c:2742
                   serial8250_set_termios+0x6e/0x80 drivers/tty/serial/8250/8250_port.c:2861
                   uart_set_options+0x31b/0x5f0 drivers/tty/serial/serial_core.c:2330
                   serial8250_console_setup+0x18a/0x460 drivers/tty/serial/8250/8250_port.c:3456
                   univ8250_console_setup+0x16c/0x210 drivers/tty/serial/8250/8250_core.c:634
                   console_call_setup kernel/printk/printk.c:3314 [inline]
                   console_call_setup kernel/printk/printk.c:3305 [inline]
                   try_enable_preferred_console+0x277/0x4c0 kernel/printk/printk.c:3355
                   register_console+0x30b/0x10a0 kernel/printk/printk.c:3533
                   univ8250_console_init+0x35/0x50 drivers/tty/serial/8250/8250_core.c:719
                   console_init+0xcc/0x680 kernel/printk/printk.c:3742
                   start_kernel+0x295/0x4c0 init/main.c:1038
                   x86_64_start_reservations+0x18/0x30 arch/x86/kernel/head64.c:507
                   x86_64_start_kernel+0xb2/0xc0 arch/x86/kernel/head64.c:488
                   common_startup_64+0x13e/0x148
 }
 ... key      at: [<ffffffff94de0160>] port_lock_key+0x0/0x40

the dependencies between the lock to be acquired
 and HARDIRQ-irq-unsafe lock:
-> (disc_data_lock#3){.+.+}-{2:2} {
   HARDIRQ-ON-R at:
                    lock_acquire kernel/locking/lockdep.c:5754 [inline]
                    lock_acquire+0x1b1/0x560 kernel/locking/lockdep.c:5719
                    __raw_read_lock include/linux/rwlock_api_smp.h:150 [inline]
                    _raw_read_lock+0x5f/0x70 kernel/locking/spinlock.c:228
                    sp_get+0x18/0xf0 drivers/net/hamradio/6pack.c:376
                    sixpack_receive_buf drivers/net/hamradio/6pack.c:439 [inline]
                    sixpack_receive_buf+0x59/0x1c90 drivers/net/hamradio/6pack.c:430
                    tty_ldisc_receive_buf+0x153/0x190 drivers/tty/tty_buffer.c:391
                    tty_port_default_receive_buf+0x70/0xb0 drivers/tty/tty_port.c:37
                    receive_buf drivers/tty/tty_buffer.c:445 [inline]
                    flush_to_ldisc+0x264/0x780 drivers/tty/tty_buffer.c:495
                    process_one_work+0x9fb/0x1b60 kernel/workqueue.c:3231
                    process_scheduled_works kernel/workqueue.c:3312 [inline]
                    worker_thread+0x6c8/0xf70 kernel/workqueue.c:3393
                    kthread+0x2c1/0x3a0 kernel/kthread.c:389
                    ret_from_fork+0x45/0x80 arch/x86/kernel/process.c:147
                    ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
   SOFTIRQ-ON-R at:
                    lock_acquire kernel/locking/lockdep.c:5754 [inline]
                    lock_acquire+0x1b1/0x560 kernel/locking/lockdep.c:5719
                    __raw_read_lock include/linux/rwlock_api_smp.h:150 [inline]
                    _raw_read_lock+0x5f/0x70 kernel/locking/spinlock.c:228
                    sp_get+0x18/0xf0 drivers/net/hamradio/6pack.c:376
                    sixpack_receive_buf drivers/net/hamradio/6pack.c:439 [inline]
                    sixpack_receive_buf+0x59/0x1c90 drivers/net/hamradio/6pack.c:430
                    tty_ldisc_receive_buf+0x153/0x190 drivers/tty/tty_buffer.c:391
                    tty_port_default_receive_buf+0x70/0xb0 drivers/tty/tty_port.c:37
                    receive_buf drivers/tty/tty_buffer.c:445 [inline]
                    flush_to_ldisc+0x264/0x780 drivers/tty/tty_buffer.c:495
                    process_one_work+0x9fb/0x1b60 kernel/workqueue.c:3231
                    process_scheduled_works kernel/workqueue.c:3312 [inline]
                    worker_thread+0x6c8/0xf70 kernel/workqueue.c:3393
                    kthread+0x2c1/0x3a0 kernel/kthread.c:389
                    ret_from_fork+0x45/0x80 arch/x86/kernel/process.c:147
                    ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
   INITIAL READ USE at:
                        lock_acquire kernel/locking/lockdep.c:5754 [inline]
                        lock_acquire+0x1b1/0x560 kernel/locking/lockdep.c:5719
                        __raw_read_lock include/linux/rwlock_api_smp.h:150 [inline]
                        _raw_read_lock+0x5f/0x70 kernel/locking/spinlock.c:228
                        sp_get+0x18/0xf0 drivers/net/hamradio/6pack.c:376
                        sixpack_receive_buf drivers/net/hamradio/6pack.c:439 [inline]
                        sixpack_receive_buf+0x59/0x1c90 drivers/net/hamradio/6pack.c:430
                        tty_ldisc_receive_buf+0x153/0x190 drivers/tty/tty_buffer.c:391
                        tty_port_default_receive_buf+0x70/0xb0 drivers/tty/tty_port.c:37
                        receive_buf drivers/tty/tty_buffer.c:445 [inline]
                        flush_to_ldisc+0x264/0x780 drivers/tty/tty_buffer.c:495
                        process_one_work+0x9fb/0x1b60 kernel/workqueue.c:3231
                        process_scheduled_works kernel/workqueue.c:3312 [inline]
                        worker_thread+0x6c8/0xf70 kernel/workqueue.c:3393
                        kthread+0x2c1/0x3a0 kernel/kthread.c:389
                        ret_from_fork+0x45/0x80 arch/x86/kernel/process.c:147
                        ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
 }
 ... key      at: [<ffffffff8ec3f2d8>] disc_data_lock+0x18/0xf20
 ... acquired at:
   lock_acquire kernel/locking/lockdep.c:5754 [inline]
   lock_acquire+0x1b1/0x560 kernel/locking/lockdep.c:5719
   __raw_read_lock include/linux/rwlock_api_smp.h:150 [inline]
   _raw_read_lock+0x5f/0x70 kernel/locking/spinlock.c:228
   sp_get+0x18/0xf0 drivers/net/hamradio/6pack.c:376
   sixpack_write_wakeup+0x20/0x390 drivers/net/hamradio/6pack.c:397
   tty_wakeup+0xe5/0x120 drivers/tty/tty_io.c:523
   tty_port_default_wakeup+0x2a/0x40 drivers/tty/tty_port.c:69
   serial8250_tx_chars+0x68e/0x860 drivers/tty/serial/8250/8250_port.c:1821
   __start_tx+0x3e9/0x4a0 drivers/tty/serial/8250/8250_port.c:1527
   serial8250_start_tx+0x363/0x530 drivers/tty/serial/8250/8250_port.c:1636
   __uart_start+0x292/0x4c0 drivers/tty/serial/serial_core.c:160
   uart_write+0x191/0x3e0 drivers/tty/serial/serial_core.c:633
   decode_prio_command drivers/net/hamradio/6pack.c:888 [inline]
   sixpack_decode drivers/net/hamradio/6pack.c:963 [inline]
   sixpack_receive_buf drivers/net/hamradio/6pack.c:453 [inline]
   sixpack_receive_buf+0x3fd/0x1c90 drivers/net/hamradio/6pack.c:430
   tty_ldisc_receive_buf+0x153/0x190 drivers/tty/tty_buffer.c:391
   tty_port_default_receive_buf+0x70/0xb0 drivers/tty/tty_port.c:37
   receive_buf drivers/tty/tty_buffer.c:445 [inline]
   flush_to_ldisc+0x264/0x780 drivers/tty/tty_buffer.c:495
   process_one_work+0x9fb/0x1b60 kernel/workqueue.c:3231
   process_scheduled_works kernel/workqueue.c:3312 [inline]
   worker_thread+0x6c8/0xf70 kernel/workqueue.c:3393
   kthread+0x2c1/0x3a0 kernel/kthread.c:389
   ret_from_fork+0x45/0x80 arch/x86/kernel/process.c:147
   ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244


stack backtrace:
CPU: 1 PID: 6237 Comm: kworker/u8:12 Not tainted 6.10.0-rc3-syzkaller-00022-gcea2a26553ac #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 06/07/2024
Workqueue: events_unbound flush_to_ldisc
Call Trace:
 <TASK>
 __dump_stack lib/dump_stack.c:88 [inline]
 dump_stack_lvl+0x116/0x1f0 lib/dump_stack.c:114
 print_bad_irq_dependency kernel/locking/lockdep.c:2626 [inline]
 check_irq_usage+0xe3c/0x1490 kernel/locking/lockdep.c:2865
 check_prev_add kernel/locking/lockdep.c:3138 [inline]
 check_prevs_add kernel/locking/lockdep.c:3253 [inline]
 validate_chain kernel/locking/lockdep.c:3869 [inline]
 __lock_acquire+0x248e/0x3b30 kernel/locking/lockdep.c:5137
 lock_acquire kernel/locking/lockdep.c:5754 [inline]
 lock_acquire+0x1b1/0x560 kernel/locking/lockdep.c:5719
 __raw_read_lock include/linux/rwlock_api_smp.h:150 [inline]
 _raw_read_lock+0x5f/0x70 kernel/locking/spinlock.c:228
 sp_get+0x18/0xf0 drivers/net/hamradio/6pack.c:376
 sixpack_write_wakeup+0x20/0x390 drivers/net/hamradio/6pack.c:397
 tty_wakeup+0xe5/0x120 drivers/tty/tty_io.c:523
 tty_port_default_wakeup+0x2a/0x40 drivers/tty/tty_port.c:69
 serial8250_tx_chars+0x68e/0x860 drivers/tty/serial/8250/8250_port.c:1821
 __start_tx+0x3e9/0x4a0 drivers/tty/serial/8250/8250_port.c:1527
 serial8250_start_tx+0x363/0x530 drivers/tty/serial/8250/8250_port.c:1636
 __uart_start+0x292/0x4c0 drivers/tty/serial/serial_core.c:160
 uart_write+0x191/0x3e0 drivers/tty/serial/serial_core.c:633
 decode_prio_command drivers/net/hamradio/6pack.c:888 [inline]
 sixpack_decode drivers/net/hamradio/6pack.c:963 [inline]
 sixpack_receive_buf drivers/net/hamradio/6pack.c:453 [inline]
 sixpack_receive_buf+0x3fd/0x1c90 drivers/net/hamradio/6pack.c:430
 tty_ldisc_receive_buf+0x153/0x190 drivers/tty/tty_buffer.c:391
 tty_port_default_receive_buf+0x70/0xb0 drivers/tty/tty_port.c:37
 receive_buf drivers/tty/tty_buffer.c:445 [inline]
 flush_to_ldisc+0x264/0x780 drivers/tty/tty_buffer.c:495
 process_one_work+0x9fb/0x1b60 kernel/workqueue.c:3231
 process_scheduled_works kernel/workqueue.c:3312 [inline]
 worker_thread+0x6c8/0xf70 kernel/workqueue.c:3393
 kthread+0x2c1/0x3a0 kernel/kthread.c:389
 ret_from_fork+0x45/0x80 arch/x86/kernel/process.c:147
 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
 </TASK>
netdevsim netdevsim3 netdevsim3 (unregistering): unset [1, 0] type 2 family 0 port 6081 - 0

Crashes (4):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2024/06/12 20:41 upstream cea2a26553ac 4d75f4f7 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-kasan-gce-selinux-root possible deadlock in serial8250_console_write
2024/04/14 18:42 upstream fe46a7dd189e c8349e48 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-kasan-gce-selinux-root possible deadlock in serial8250_console_write
2024/04/02 04:22 upstream fe46a7dd189e 6baf5069 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-kasan-gce-smack-root possible deadlock in serial8250_console_write
2024/04/09 16:15 linux-next a053fd3ca5d1 56086b24 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-linux-next-kasan-gce-root possible deadlock in serial8250_console_write
* Struck through repros no longer work on HEAD.