Received: by 2002:ab2:784b:0:b0:1fd:adc2:8405 with SMTP id m11csp71060lqp; Sun, 9 Jun 2024 17:19:47 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCXb57iiMOO06u+H5S7nzCx4u1N73172DS6xHBvXw7lRS8YsKZh1ydQSWlwwqzxSdH4vlyv0erSVTuOSm9zdVz8vNQXjobMmD5HMX0TK2g== X-Google-Smtp-Source: AGHT+IFQ2u/TsPR9YZ661K1UmlO7NGpqh0vzw4Gmpw4BydcDPTUGRf+XQVIMuixewcmhfBWeAIbS X-Received: by 2002:a17:906:fe49:b0:a64:a091:91f2 with SMTP id a640c23a62f3a-a6cd7d6869bmr628053166b.37.1717978787195; Sun, 09 Jun 2024 17:19:47 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1717978787; cv=pass; d=google.com; s=arc-20160816; b=upyehhA8aipNV1cdJ5Mu7PRF0kq2CxWO9XhOu6CkK5BZrmsvNXILh5r1OtmvFOs8CZ PDhw9rTblTWvwHwQPFgZc+FYgSMJzK6Ro0LpuSZS94Q5xMxIoZWXTdjoysQzDTycydzS S2ktWwrrI10iwXu9tLWeZjYvgqGY/WA+1VEAKxTt49OzhekZdauJhuutMQD8OaJ/C92N xCLekNKDOss8KJru751VjLfjNhqs5dVdYlm36ThHy+/FOKaqBM+jfN4+jehVnQRgD8rz 9CGl7254T4W85Uzwds5gpvwXRCUQYiQFj/oiZpD9h5Bi0Jvqw0ocuBB3dZ49UiWF+Xh3 XfNw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from; bh=z/6W3ytnJoAP/LUW0u1YKmQCzK9954ozCMNw87fkIf4=; fh=dQ6SmeF567EtpCe4lkJlTltjL2BpCWOUVVRNkD9O1TU=; b=0CA4ZGxx2WhvHYc4O0flARdKv/l16zOvZVLMs9lJZRSgMWv5AKPKyhlDAuJ2/UbW3g FyMLn11IGwGhL0Mr5jyCWByac/8VYh/NJhtLD+qvxiQNfp4wbpu6QH95kinrvaRIdYPU JAq1HzBaPL5GsYlD75WpYh5rn1fGn6ms81kSVEHGsITgieGOHUzBTnTDCy7cB1jcy3+3 1lrlVMc92txbnA+uxrbvSkq8XGG/++iq4gtXOCwlC7Fnek3Dzy1wFOpGo70vOe8PcnGb n5NBwxMWoHUFfaBxYWsEkiF8Kxuz4rezfJ8UDaULpK3YqebRTuWiZchd57k8dB3Na9X0 dKOw==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1 spf=pass spfdomain=sina.com); spf=pass (google.com: domain of linux-kernel+bounces-207567-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-207567-linux.lists.archive=gmail.com@vger.kernel.org" Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [2604:1380:4601:e00::3]) by mx.google.com with ESMTPS id a640c23a62f3a-a6f1d313dedsi74328366b.511.2024.06.09.17.19.47 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Jun 2024 17:19:47 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-207567-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) client-ip=2604:1380:4601:e00::3; Authentication-Results: mx.google.com; arc=pass (i=1 spf=pass spfdomain=sina.com); spf=pass (google.com: domain of linux-kernel+bounces-207567-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-207567-linux.lists.archive=gmail.com@vger.kernel.org" Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id B6AC41F2118B for ; Mon, 10 Jun 2024 00:19:46 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 49F7617EF; Mon, 10 Jun 2024 00:19:39 +0000 (UTC) Received: from mail115-118.sinamail.sina.com.cn (mail115-118.sinamail.sina.com.cn [218.30.115.118]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4AD9217F6 for ; Mon, 10 Jun 2024 00:19:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=218.30.115.118 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717978778; cv=none; b=MFkIvN1Iu/D8p15AruNbBqRC0++GtPQQxp93gTMrC2AOAVKBRi6prQ+Y6kw1w3ZijKbq+7iroPTkxMFO+YyKfPJnYcqVpx+jTMHmnYm3FJM+jdW5XH4rbnEImzM9D6HTaVKFZJfIQ+BFC3lMuy5zBvoW8zHY/gJt/SqBDLVjACM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717978778; c=relaxed/simple; bh=epuzfZNoL5legX1ezur/7fbUoj4PCjOINSlQR/jjdg8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=HsBB5n6q1a3fXXgr7qu6pSd7iDkiG45f6Z3rJUIrLJ7stzYHzFCqc6oN9UTI77rzwCVnjLBKkxKedyv+o/9z0CXcOdIuCLFdlJuGtX0OmLHeZ9+zHV1o44PeTwyEXqoFeB+N7i/Y8ZQCcrRu4rV23GRkJPdmUTOp67mBGQS9vZM= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sina.com; spf=pass smtp.mailfrom=sina.com; arc=none smtp.client-ip=218.30.115.118 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sina.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sina.com X-SMAIL-HELO: localhost.localdomain Received: from unknown (HELO localhost.localdomain)([113.88.51.173]) by sina.com (172.16.235.25) with ESMTP id 6666468A0000711C; Mon, 10 Jun 2024 08:19:24 +0800 (CST) X-Sender: hdanton@sina.com X-Auth-ID: hdanton@sina.com Authentication-Results: sina.com; spf=none smtp.mailfrom=hdanton@sina.com; dkim=none header.i=none; dmarc=none action=none header.from=hdanton@sina.com X-SMAIL-MID: 36046234210254 X-SMAIL-UIID: 9A55A22873B844119570E362A7ADB9D6-20240610-081924-1 From: Hillf Danton To: syzbot Cc: gregkh@linuxfoundation.org, jirislaby@kernel.org, Boqun Feng , Tetsuo Handa , Linus Torvalds , linux-kernel@vger.kernel.org, linux-serial@vger.kernel.org, syzkaller-bugs@googlegroups.com Subject: Re: [syzbot] [serial?] possible deadlock in console_lock_spinning_enable (4) Date: Mon, 10 Jun 2024 08:19:14 +0800 Message-Id: <20240610001914.2081-1-hdanton@sina.com> In-Reply-To: <000000000000a8d9a7061a76a05f@google.com> References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit On Sun, 09 Jun 2024 08:24:24 -0700 > Hello, > > syzbot found the following issue on: > > HEAD commit: 8867bbd4a056 mm: arm64: Fix the out-of-bounds issue in con.. > git tree: git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-kernelci > console output: https://syzkaller.appspot.com/x/log.txt?x=14d199ce980000 > kernel config: https://syzkaller.appspot.com/x/.config?x=3b4350cf56c61c80 > dashboard link: https://syzkaller.appspot.com/bug?extid=0f558b549182d2711c75 > compiler: Debian clang version 15.0.6, GNU ld (GNU Binutils for Debian) 2.40 > userspace arch: arm64 > syz repro: https://syzkaller.appspot.com/x/repro.syz?x=11493bc2980000 > C reproducer: https://syzkaller.appspot.com/x/repro.c?x=146cff16980000 > > Downloadable assets: > disk image: https://storage.googleapis.com/syzbot-assets/6ea21f50498b/disk-8867bbd4.raw.xz > vmlinux: https://storage.googleapis.com/syzbot-assets/e2fed09364aa/vmlinux-8867bbd4.xz > kernel image: https://storage.googleapis.com/syzbot-assets/4860173c7a18/Image-8867bbd4.gz.xz > > IMPORTANT: if you fix the issue, please add the following tag to the commit: > Reported-by: syzbot+0f558b549182d2711c75@syzkaller.appspotmail.com > > sp0: Synchronizing with TNC > ------------[ cut here ]------------ > ====================================================== > WARNING: possible circular locking dependency detected > 6.10.0-rc2-syzkaller-g8867bbd4a056 #0 Tainted: G W > ------------------------------------------------------ > syz-executor196/6254 is trying to acquire lock: > ffff80008f1bcea0 (console_owner){....}-{0:0}, at: console_lock_spinning_enable+0x88/0xec kernel/printk/printk.c:1866 > > but task is already holding lock: > ffff800093bc1c58 (&port_lock_key){....}-{2:2}, at: uart_port_lock_irqsave include/linux/serial_core.h:618 [inline] > ffff800093bc1c58 (&port_lock_key){....}-{2:2}, at: uart_write+0x114/0x2ec drivers/tty/serial/serial_core.c:624 > > which lock already depends on the new lock. > > > the existing dependency chain (in reverse order) is: > > -> #1 (&port_lock_key){....}-{2:2}: > __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline] > _raw_spin_lock_irqsave+0x5c/0x7c kernel/locking/spinlock.c:162 > uart_port_lock_irqsave include/linux/serial_core.h:618 [inline] > pl011_console_write+0x148/0x724 drivers/tty/serial/amba-pl011.c:2316 > console_emit_next_record kernel/printk/printk.c:2928 [inline] > console_flush_all+0x5cc/0xb74 kernel/printk/printk.c:2994 > console_unlock+0xec/0x3d4 kernel/printk/printk.c:3063 > vprintk_emit+0x1ec/0x350 kernel/printk/printk.c:2345 > vprintk_default+0xa0/0xe4 kernel/printk/printk.c:2360 > vprintk+0x200/0x2d4 kernel/printk/printk_safe.c:45 > _printk+0xdc/0x128 kernel/printk/printk.c:2370 > register_console+0x700/0xa8c kernel/printk/printk.c:3596 > uart_configure_port drivers/tty/serial/serial_core.c:2664 [inline] > serial_core_add_one_port drivers/tty/serial/serial_core.c:3192 [inline] > serial_core_register_port+0x1428/0x1bf4 drivers/tty/serial/serial_core.c:3429 > serial_ctrl_register_port+0x28/0x38 drivers/tty/serial/serial_ctrl.c:41 > uart_add_one_port+0x28/0x38 drivers/tty/serial/serial_port.c:136 > pl011_register_port+0x1b4/0x44c drivers/tty/serial/amba-pl011.c:2744 > sbsa_uart_probe+0x488/0x608 drivers/tty/serial/amba-pl011.c:2914 > platform_probe+0x148/0x1c0 drivers/base/platform.c:1404 > really_probe+0x38c/0x8fc drivers/base/dd.c:656 > __driver_probe_device+0x194/0x374 drivers/base/dd.c:798 > driver_probe_device+0x78/0x330 drivers/base/dd.c:828 > __device_attach_driver+0x2a8/0x4f4 drivers/base/dd.c:956 > bus_for_each_drv+0x228/0x2bc drivers/base/bus.c:457 > __device_attach+0x2b4/0x434 drivers/base/dd.c:1028 > device_initial_probe+0x24/0x34 drivers/base/dd.c:1077 > bus_probe_device+0x178/0x240 drivers/base/bus.c:532 > device_add+0x728/0xa6c drivers/base/core.c:3721 > platform_device_add+0x3e8/0x6e8 drivers/base/platform.c:716 > platform_device_register_full+0x4ec/0x604 drivers/base/platform.c:844 > acpi_create_platform_device+0x5bc/0x744 drivers/acpi/acpi_platform.c:177 > acpi_default_enumeration+0x6c/0xdc drivers/acpi/scan.c:2184 > acpi_bus_attach+0x8b8/0xaa8 drivers/acpi/scan.c:2293 > acpi_dev_for_one_check+0xa0/0xb4 drivers/acpi/bus.c:1143 > device_for_each_child+0xec/0x174 drivers/base/core.c:4050 > acpi_dev_for_each_child+0xc4/0x108 drivers/acpi/bus.c:1155 > acpi_bus_attach+0x358/0xaa8 drivers/acpi/scan.c:2298 > acpi_dev_for_one_check+0xa0/0xb4 drivers/acpi/bus.c:1143 > device_for_each_child+0xec/0x174 drivers/base/core.c:4050 > acpi_dev_for_each_child+0xc4/0x108 drivers/acpi/bus.c:1155 > acpi_bus_attach+0x358/0xaa8 drivers/acpi/scan.c:2298 > acpi_bus_scan+0x118/0x4f0 drivers/acpi/scan.c:2579 > acpi_scan_init+0x214/0x6b0 drivers/acpi/scan.c:2714 > acpi_init+0x190/0x254 drivers/acpi/bus.c:1460 > do_one_initcall+0x254/0x9e4 init/main.c:1267 > do_initcall_level+0x154/0x214 init/main.c:1329 > do_initcalls+0x58/0xac init/main.c:1345 > do_basic_setup+0x8c/0xa0 init/main.c:1364 > kernel_init_freeable+0x324/0x478 init/main.c:1578 > kernel_init+0x24/0x2a0 init/main.c:1467 > ret_from_fork+0x10/0x20 arch/arm64/kernel/entry.S:860 > > -> #0 (console_owner){....}-{0:0}: > check_prev_add kernel/locking/lockdep.c:3134 [inline] > check_prevs_add kernel/locking/lockdep.c:3253 [inline] > validate_chain kernel/locking/lockdep.c:3869 [inline] > __lock_acquire+0x3384/0x763c kernel/locking/lockdep.c:5137 > lock_acquire+0x248/0x73c kernel/locking/lockdep.c:5754 > console_lock_spinning_enable+0xb4/0xec kernel/printk/printk.c:1870 > console_emit_next_record kernel/printk/printk.c:2922 [inline] > console_flush_all+0x58c/0xb74 kernel/printk/printk.c:2994 > console_unlock+0xec/0x3d4 kernel/printk/printk.c:3063 > vprintk_emit+0x1ec/0x350 kernel/printk/printk.c:2345 > vprintk_default+0xa0/0xe4 kernel/printk/printk.c:2360 > vprintk+0x200/0x2d4 kernel/printk/printk_safe.c:45 > _printk+0xdc/0x128 kernel/printk/printk.c:2370 > __report_bug lib/bug.c:195 [inline] > report_bug+0x3b8/0x5b0 lib/bug.c:219 > bug_handler+0x50/0x1fc arch/arm64/kernel/traps.c:978 > call_break_hook arch/arm64/kernel/debug-monitors.c:321 [inline] > brk_handler+0x17c/0x2e0 arch/arm64/kernel/debug-monitors.c:328 > do_debug_exception+0x1e4/0x398 arch/arm64/mm/fault.c:909 > el1_dbg+0x64/0x80 arch/arm64/kernel/entry-common.c:472 > el1h_64_sync_handler+0x40/0xac arch/arm64/kernel/entry-common.c:512 > el1h_64_sync+0x64/0x68 arch/arm64/kernel/entry.S:593 > spin_unlock_irqrestore include/linux/spinlock.h:406 [inline] > uart_port_unlock_irqrestore include/linux/serial_core.h:669 [inline] in include/linux/spinlock_api_smp.h static inline void __raw_spin_unlock_irqrestore(raw_spinlock_t *lock, unsigned long flags) { spin_release(&lock->dep_map, _RET_IP_); do_raw_spin_unlock(lock); local_irq_restore(flags); preempt_enable(); } Because spin_release() goes before restoring local irq, the port_lock should have been ruled out of lockdep that triggered this report. But it was delivered to lore. > uart_write+0x280/0x2ec drivers/tty/serial/serial_core.c:626 > tnc_init drivers/net/hamradio/6pack.c:531 [inline] > sixpack_open+0x5d8/0x8b0 drivers/net/hamradio/6pack.c:628 > tty_ldisc_open+0x9c/0x14c drivers/tty/tty_ldisc.c:432 > tty_set_ldisc+0x2f8/0x4e0 drivers/tty/tty_ldisc.c:563 > tiocsetd+0x100/0x13c drivers/tty/tty_io.c:2439 > tty_ioctl+0xba0/0xd8c drivers/tty/tty_io.c:2739 > vfs_ioctl fs/ioctl.c:51 [inline] > __do_sys_ioctl fs/ioctl.c:907 [inline] > __se_sys_ioctl fs/ioctl.c:893 [inline] > __arm64_sys_ioctl+0x14c/0x1c8 fs/ioctl.c:893 > __invoke_syscall arch/arm64/kernel/syscall.c:34 [inline] > invoke_syscall+0x98/0x2b8 arch/arm64/kernel/syscall.c:48 > el0_svc_common+0x130/0x23c arch/arm64/kernel/syscall.c:133 > do_el0_svc+0x48/0x58 arch/arm64/kernel/syscall.c:152 > el0_svc+0x54/0x168 arch/arm64/kernel/entry-common.c:712 > el0t_64_sync_handler+0x84/0xfc arch/arm64/kernel/entry-common.c:730 > el0t_64_sync+0x190/0x194 arch/arm64/kernel/entry.S:598 > > other info that might help us debug this: > > Possible unsafe locking scenario: > > CPU0 CPU1 > ---- ---- > lock(&port_lock_key); > lock(console_owner); > lock(&port_lock_key); > lock(console_owner); > > *** DEADLOCK ***