L1TF CPU bug present and SMT on, data leak possible. See CVE-2018-3646 and https://www.kernel.org/doc/html/latest/admin-guide/hw-vuln/l1tf.html for details. ====================================================== WARNING: possible circular locking dependency detected 4.14.303-syzkaller #0 Not tainted ------------------------------------------------------ systemd-udevd/10124 is trying to acquire lock: (&(&gsm->tx_lock)->rlock){-...}, at: [] gsmld_write_wakeup+0x4e/0xd0 drivers/tty/n_gsm.c:2490 but task is already holding lock: (&port_lock_key){-.-.}, at: [] serial8250_handle_irq.part.0+0x20/0x390 drivers/tty/serial/8250/8250_port.c:1894 which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #1 (&port_lock_key){-.-.}: __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline] _raw_spin_lock_irqsave+0x8c/0xc0 kernel/locking/spinlock.c:160 uart_write_room+0xd5/0x340 drivers/tty/serial/serial_core.c:643 tty_write_room+0x61/0x80 drivers/tty/tty_ioctl.c:78 gsmld_write+0x69/0x120 drivers/tty/n_gsm.c:2546 do_tty_write drivers/tty/tty_io.c:959 [inline] tty_write+0x410/0x740 drivers/tty/tty_io.c:1043 __vfs_write+0xe4/0x630 fs/read_write.c:480 __kernel_write+0xf5/0x330 fs/read_write.c:501 write_pipe_buf+0x143/0x1c0 fs/splice.c:797 splice_from_pipe_feed fs/splice.c:502 [inline] __splice_from_pipe+0x326/0x7a0 fs/splice.c:626 splice_from_pipe fs/splice.c:661 [inline] default_file_splice_write+0xc5/0x150 fs/splice.c:809 do_splice_from fs/splice.c:851 [inline] direct_splice_actor+0x115/0x160 fs/splice.c:1018 splice_direct_to_actor+0x27c/0x730 fs/splice.c:973 do_splice_direct+0x164/0x210 fs/splice.c:1061 do_sendfile+0x47f/0xb30 fs/read_write.c:1441 SYSC_sendfile64 fs/read_write.c:1502 [inline] SyS_sendfile64+0xff/0x110 fs/read_write.c:1488 do_syscall_64+0x1d5/0x640 arch/x86/entry/common.c:292 entry_SYSCALL_64_after_hwframe+0x5e/0xd3 -> #0 (&(&gsm->tx_lock)->rlock){-...}: lock_acquire+0x170/0x3f0 kernel/locking/lockdep.c:3998 __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline] _raw_spin_lock_irqsave+0x8c/0xc0 kernel/locking/spinlock.c:160 gsmld_write_wakeup+0x4e/0xd0 drivers/tty/n_gsm.c:2490 tty_wakeup+0xc3/0xf0 drivers/tty/tty_io.c:533 tty_port_default_wakeup+0x26/0x40 drivers/tty/tty_port.c:49 serial8250_tx_chars+0x3fe/0xc70 drivers/tty/serial/8250/8250_port.c:1828 serial8250_handle_irq.part.0+0x2c7/0x390 drivers/tty/serial/8250/8250_port.c:1918 serial8250_handle_irq drivers/tty/serial/8250/8250_port.c:1891 [inline] serial8250_default_handle_irq+0x8a/0x1f0 drivers/tty/serial/8250/8250_port.c:1934 serial8250_interrupt+0xf3/0x210 drivers/tty/serial/8250/8250_core.c:129 __handle_irq_event_percpu+0xee/0x7f0 kernel/irq/handle.c:147 handle_irq_event_percpu kernel/irq/handle.c:187 [inline] handle_irq_event+0xed/0x240 kernel/irq/handle.c:204 handle_edge_irq+0x224/0xc40 kernel/irq/chip.c:770 generic_handle_irq_desc include/linux/irqdesc.h:159 [inline] handle_irq+0x35/0x50 arch/x86/kernel/irq_64.c:87 do_IRQ+0x93/0x1d0 arch/x86/kernel/irq.c:230 ret_from_intr+0x0/0x1e arch_local_irq_restore arch/x86/include/asm/paravirt.h:779 [inline] lock_is_held_type+0x17a/0x210 kernel/locking/lockdep.c:4038 lock_is_held include/linux/lockdep.h:437 [inline] ___might_sleep+0x1ea/0x2b0 kernel/sched/core.c:6006 dput.part.0+0x3f/0x710 fs/dcache.c:815 dput+0x1b/0x30 fs/dcache.c:811 path_put fs/namei.c:501 [inline] terminate_walk+0x3dd/0x530 fs/namei.c:619 path_lookupat+0x1fb/0x780 fs/namei.c:2361 filename_lookup+0x18a/0x510 fs/namei.c:2377 user_path_at include/linux/namei.h:57 [inline] SYSC_faccessat fs/open.c:403 [inline] SyS_faccessat+0x21b/0x680 fs/open.c:353 do_syscall_64+0x1d5/0x640 arch/x86/entry/common.c:292 entry_SYSCALL_64_after_hwframe+0x5e/0xd3 other info that might help us debug this: Possible unsafe locking scenario: CPU0 CPU1 ---- ---- lock(&port_lock_key); lock(&(&gsm->tx_lock)->rlock); lock(&port_lock_key); lock(&(&gsm->tx_lock)->rlock); *** DEADLOCK *** 3 locks held by systemd-udevd/10124: #0: (&(&i->lock)->rlock){-.-.}, at: [] spin_lock include/linux/spinlock.h:317 [inline] #0: (&(&i->lock)->rlock){-.-.}, at: [] serial8250_interrupt+0x3a/0x210 drivers/tty/serial/8250/8250_core.c:119 #1: (&port_lock_key){-.-.}, at: [] serial8250_handle_irq.part.0+0x20/0x390 drivers/tty/serial/8250/8250_port.c:1894 #2: (&tty->ldisc_sem){++++}, at: [] tty_ldisc_ref+0x1b/0x80 drivers/tty/tty_ldisc.c:305 stack backtrace: CPU: 1 PID: 10124 Comm: systemd-udevd Not tainted 4.14.303-syzkaller #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/12/2023 Call Trace: __dump_stack lib/dump_stack.c:17 [inline] dump_stack+0x1b2/0x281 lib/dump_stack.c:58 print_circular_bug.constprop.0.cold+0x2d7/0x41e kernel/locking/lockdep.c:1258 check_prev_add kernel/locking/lockdep.c:1905 [inline] check_prevs_add kernel/locking/lockdep.c:2022 [inline] validate_chain kernel/locking/lockdep.c:2464 [inline] __lock_acquire+0x2e0e/0x3f20 kernel/locking/lockdep.c:3491 lock_acquire+0x170/0x3f0 kernel/locking/lockdep.c:3998 __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline] _raw_spin_lock_irqsave+0x8c/0xc0 kernel/locking/spinlock.c:160 gsmld_write_wakeup+0x4e/0xd0 drivers/tty/n_gsm.c:2490 tty_wakeup+0xc3/0xf0 drivers/tty/tty_io.c:533 tty_port_default_wakeup+0x26/0x40 drivers/tty/tty_port.c:49 serial8250_tx_chars+0x3fe/0xc70 drivers/tty/serial/8250/8250_port.c:1828 serial8250_handle_irq.part.0+0x2c7/0x390 drivers/tty/serial/8250/8250_port.c:1918 serial8250_handle_irq drivers/tty/serial/8250/8250_port.c:1891 [inline] serial8250_default_handle_irq+0x8a/0x1f0 drivers/tty/serial/8250/8250_port.c:1934 serial8250_interrupt+0xf3/0x210 drivers/tty/serial/8250/8250_core.c:129 __handle_irq_event_percpu+0xee/0x7f0 kernel/irq/handle.c:147 handle_irq_event_percpu kernel/irq/handle.c:187 [inline] handle_irq_event+0xed/0x240 kernel/irq/handle.c:204 handle_edge_irq+0x224/0xc40 kernel/irq/chip.c:770 generic_handle_irq_desc include/linux/irqdesc.h:159 [inline] handle_irq+0x35/0x50 arch/x86/kernel/irq_64.c:87 do_IRQ+0x93/0x1d0 arch/x86/kernel/irq.c:230 common_interrupt+0x93/0x93 arch/x86/entry/entry_64.S:578 RIP: 0010:arch_local_irq_restore arch/x86/include/asm/paravirt.h:779 [inline] RIP: 0010:lock_is_held_type+0x17a/0x210 kernel/locking/lockdep.c:4038 RSP: 0018:ffff88804c59fb00 EFLAGS: 00000282 ORIG_RAX: ffffffffffffffc8 RAX: 1ffffffff11e13d9 RBX: 0000000000000282 RCX: 0000000000000001 RDX: dffffc0000000000 RSI: 00000000ffffffff RDI: 0000000000000282 RBP: ffff88804c45a240 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: ffff88804c45a240 R12: 0000000000000000 R13: dffffc0000000000 R14: ffffffff818c1757 R15: 0000000000000000 lock_is_held include/linux/lockdep.h:437 [inline] ___might_sleep+0x1ea/0x2b0 kernel/sched/core.c:6006 dput.part.0+0x3f/0x710 fs/dcache.c:815 dput+0x1b/0x30 fs/dcache.c:811 path_put fs/namei.c:501 [inline] terminate_walk+0x3dd/0x530 fs/namei.c:619 path_lookupat+0x1fb/0x780 fs/namei.c:2361 filename_lookup+0x18a/0x510 fs/namei.c:2377 user_path_at include/linux/namei.h:57 [inline] SYSC_faccessat fs/open.c:403 [inline] SyS_faccessat+0x21b/0x680 fs/open.c:353 do_syscall_64+0x1d5/0x640 arch/x86/entry/common.c:292 entry_SYSCALL_64_after_hwframe+0x5e/0xd3 RIP: 0033:0x7fce01ba19c7 RSP: 002b:00007ffcabdb8138 EFLAGS: 00000246 ORIG_RAX: 0000000000000015 RAX: ffffffffffffffda RBX: 000055eded4608a0 RCX: 00007fce01ba19c7 RDX: 00746e657665752f RSI: 0000000000000000 RDI: 00007ffcabdb8140 RBP: 00007ffcabdb81a0 R08: 0000000000000c38 R09: 0000000000001010 R10: 00007fce01e5fb58 R11: 0000000000000246 R12: 000055edeb882856 R13: 000055eded471ab0 R14: 00007ffcabdb8140 R15: 000055eded46c868 BTRFS error (device loop2): unsupported checksum algorithm 3 BTRFS error (device loop2): superblock checksum mismatch BTRFS error (device loop2): open_ctree failed BTRFS error (device loop2): unsupported checksum algorithm 3 BTRFS error (device loop2): superblock checksum mismatch BTRFS error (device loop2): open_ctree failed vhci_hcd vhci_hcd.0: pdev(5) rhport(0) sockfd(4) vhci_hcd vhci_hcd.0: devid(0) speed(4) speed_str(wireless) vhci_hcd vhci_hcd.0: Device attached vhci_hcd: connection closed vhci_hcd: stop threads vhci_hcd: release socket vhci_hcd: disconnect device vhci_hcd vhci_hcd.0: pdev(4) rhport(0) sockfd(3) vhci_hcd vhci_hcd.0: devid(0) speed(4) speed_str(wireless) vhci_hcd vhci_hcd.0: Device attached vhci_hcd: connection closed vhci_hcd: stop threads vhci_hcd: release socket vhci_hcd: disconnect device netlink: 8 bytes leftover after parsing attributes in process `syz-executor.2'. device vxlan0 entered promiscuous mode netlink: 8 bytes leftover after parsing attributes in process `syz-executor.2'. netlink: 8 bytes leftover after parsing attributes in process `syz-executor.2'. netlink: 8 bytes leftover after parsing attributes in process `syz-executor.2'. audit: type=1326 audit(1674443118.949:4): auid=4294967295 uid=0 gid=0 ses=4294967295 pid=10527 comm="syz-executor.4" exe="/root/syz-executor.4" sig=31 arch=c000003e syscall=202 compat=0 ip=0x7f248dfdd0c9 code=0x0 vhci_hcd vhci_hcd.0: pdev(2) rhport(0) sockfd(5) vhci_hcd vhci_hcd.0: devid(0) speed(4) speed_str(wireless) vhci_hcd: Failed attach request for unsupported USB speed: UNKNOWN vhci_hcd vhci_hcd.0: Device attached vhci_hcd: connection closed vhci_hcd: stop threads vhci_hcd vhci_hcd.0: pdev(0) rhport(0) sockfd(4) vhci_hcd vhci_hcd.0: devid(0) speed(4) speed_str(wireless) vhci_hcd: release socket vhci_hcd: disconnect device vhci_hcd vhci_hcd.0: Device attached vhci_hcd: connection closed vhci_hcd: stop threads vhci_hcd: release socket vhci_hcd: disconnect device *** Guest State *** CR0: actual=0x0000000000000030, shadow=0x0000000060000010, gh_mask=fffffffffffffff7 CR4: actual=0x0000000000002050, shadow=0x0000000000000000, gh_mask=ffffffffffffe871 CR3 = 0x00000000fffbc000 RSP = 0x0000000000000002 RIP = 0x0000000000000231 netlink: 1528 bytes leftover after parsing attributes in process `syz-executor.4'. RFLAGS=0x00001282 DR7 = 0x0000000000000400 netlink: 1528 bytes leftover after parsing attributes in process `syz-executor.4'. Sysenter RSP=0000000000000000 CS:RIP=0000:0000000000000000 CS: sel=0x0000, attr=0x0009b, limit=0x0000ffff, base=0x0000000000000000 DS: sel=0x0000, attr=0x00093, limit=0x0000ffff, base=0x0000000000000000 SS: sel=0x0000, attr=0x00093, limit=0x0000ffff, base=0x0000000000000000 ES: sel=0x0000, attr=0x00093, limit=0x0000ffff, base=0x0000000000000000 FS: sel=0x0000, attr=0x00093, limit=0x0000ffff, base=0x0000000000000000 GS: sel=0x0000, attr=0x00093, limit=0x0000ffff, base=0x0000000000000000 GDTR: limit=0x0000ffff, base=0x0000000000000000 LDTR: sel=0x0000, attr=0x00082, limit=0x0000ffff, base=0x0000000000000000 IDTR: limit=0x0000ffff, base=0x0000000000000000 TR: sel=0x0000, attr=0x0008b, limit=0x0000ffff, base=0x0000000000000000 EFER = 0x0000000000000000 PAT = 0x0007040600070406 DebugCtl = 0x0000000000000000 DebugExceptions = 0x0000000000000000 Interruptibility = 00000001 ActivityState = 00000000 *** Host State *** RIP = 0xffffffff8116183e RSP = 0xffff8880442e79b8 CS=0010 SS=0018 DS=0000 ES=0000 FS=0000 GS=0000 TR=0040 FSBase=00007f669e589700 GSBase=ffff8880ba400000 TRBase=fffffe000003e000 GDTBase=fffffe000003c000 IDTBase=fffffe0000000000 CR0=0000000080050033 CR3=00000000a0957000 CR4=00000000003426f0 Sysenter RSP=fffffe000003e000 CS:RIP=0010:ffffffff87401780 EFER = 0x0000000000000d01 PAT = 0x0407050600070106 *** Control State *** PinBased=0000003f CPUBased=b699edfa SecondaryExec=000000e2 EntryControls=0000d1ff ExitControls=002fefff ExceptionBitmap=00060042 PFECmask=00000000 PFECmatch=00000000 VMEntry: intr_info=80000202 errcode=00000000 ilen=00000000 VMExit: intr_info=00000000 errcode=00000000 ilen=00000003 reason=80000021 qualification=0000000000000003 IDTVectoring: info=00000000 errcode=00000000 TSC Offset = 0xffffff7db87c3486 EPT pointer = 0x000000009cd0601e Virtual processor ID = 0x0002 audit: type=1326 audit(1674443120.879:5): auid=4294967295 uid=0 gid=0 ses=4294967295 pid=10787 comm="syz-executor.2" exe="/root/syz-executor.2" sig=31 arch=c000003e syscall=202 compat=0 ip=0x7fbdc2f110c9 code=0x0 unregister_netdevice: waiting for ip6gre0 to become free. Usage count = -1 audit: type=1800 audit(1674443121.929:6): pid=10871 uid=0 auid=4294967295 ses=4294967295 op="collect_data" cause="failed(directio)" comm="syz-executor.1" name="file0" dev="sda1" ino=14002 res=0 audit: type=1800 audit(1674443122.949:7): pid=10934 uid=0 auid=4294967295 ses=4294967295 op="collect_data" cause="failed(directio)" comm="syz-executor.1" name="file0" dev="sda1" ino=14042 res=0 audit: type=1800 audit(1674443123.089:8): pid=10935 uid=0 auid=4294967295 ses=4294967295 op="collect_data" cause="failed(directio)" comm="syz-executor.3" name="file0" dev="sda1" ino=14054 res=0 audit: type=1800 audit(1674443123.879:9): pid=10971 uid=0 auid=4294967295 ses=4294967295 op="collect_data" cause="failed(directio)" comm="syz-executor.3" name="file0" dev="sda1" ino=14068 res=0 audit: type=1800 audit(1674443124.030:10): pid=10972 uid=0 auid=4294967295 ses=4294967295 op="collect_data" cause="failed(directio)" comm="syz-executor.1" name="file0" dev="sda1" ino=14069 res=0 audit: type=1800 audit(1674443124.740:11): pid=11005 uid=0 auid=4294967295 ses=4294967295 op="collect_data" cause="failed(directio)" comm="syz-executor.1" name="file0" dev="sda1" ino=14054 res=0 audit: type=1800 audit(1674443124.970:12): pid=11006 uid=0 auid=4294967295 ses=4294967295 op="collect_data" cause="failed(directio)" comm="syz-executor.3" name="file0" dev="sda1" ino=14055 res=0 nvme_fabrics: unknown parameter or missing value 'gDf˜' in ctrl creation request nvme_fabrics: unknown parameter or missing value 'gDf˜' in ctrl creation request nvme_fabrics: unknown parameter or missing value 'gDf˜' in ctrl creation request audit: type=1326 audit(1674443126.550:13): auid=4294967295 uid=0 gid=0 ses=4294967295 pid=11123 comm="syz-executor.0" exe="/root/syz-executor.0" sig=9 arch=c000003e syscall=231 compat=0 ip=0x7f0ab294a0c9 code=0x0 nvme_fabrics: unknown parameter or missing value 'gDf˜' in ctrl creation request ucma_write: process 125 (syz-executor.3) changed security contexts after opening file descriptor, this is not allowed.