From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0AA40CCFA15 for ; Thu, 26 Sep 2024 04:07:24 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 65BB96B0096; Thu, 26 Sep 2024 00:07:24 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 60A986B00A4; Thu, 26 Sep 2024 00:07:24 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4AB8D6B00B1; Thu, 26 Sep 2024 00:07:24 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 23E1A6B0096 for ; Thu, 26 Sep 2024 00:07:24 -0400 (EDT) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id A5741A070D for ; Thu, 26 Sep 2024 04:07:23 +0000 (UTC) X-FDA: 82605554766.19.0D8C78D Received: from mail-pf1-f182.google.com (mail-pf1-f182.google.com [209.85.210.182]) by imf20.hostedemail.com (Postfix) with ESMTP id CF3AE1C0008 for ; Thu, 26 Sep 2024 04:07:21 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=Y4LPIqQV; dmarc=pass (policy=none) header.from=chromium.org; spf=pass (imf20.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.210.182 as permitted sender) smtp.mailfrom=senozhatsky@chromium.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1727323543; a=rsa-sha256; cv=none; b=Q0F0XgR5IO5JayZFacKScO4ham5jmn62Rr5Ncwl6+id5nc30uomx+Egzxi/ixzyOG90hHF 12yEv+TfhyFISB20pNCYEIBPxB7+ijSLlNfNudYvD9iygsUiAlWCXr/oBDF+nYZ7yK15pl iEcJHK1eisUPKWSwEq5L+ir1hV6WWgg= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=Y4LPIqQV; dmarc=pass (policy=none) header.from=chromium.org; spf=pass (imf20.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.210.182 as permitted sender) smtp.mailfrom=senozhatsky@chromium.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1727323543; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding:in-reply-to: references:dkim-signature; bh=jpB2o9Lcq3InykYwK98eaJdkLVRr1v20ZpDxR5I8i/w=; b=TfXKS/dEOzaOH5CqoVz4QMMytdm6PrzvIt3eGduztu0PILur9AYz434s7k5jwMdPOJIWU7 SNoQSr2q8g1y/bazFAoKBjgkxlcoEV9y1ydW0uTkYsC9zCz6k7zSNBWcallWelhRYoaEzW xfMHgkj2CLxA3ypt8MRe5j1dCaM7xjg= Received: by mail-pf1-f182.google.com with SMTP id d2e1a72fcca58-7178df70f28so478360b3a.2 for ; Wed, 25 Sep 2024 21:07:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1727323640; x=1727928440; darn=kvack.org; h=content-disposition:mime-version:message-id:subject:cc:to:from:date :from:to:cc:subject:date:message-id:reply-to; bh=jpB2o9Lcq3InykYwK98eaJdkLVRr1v20ZpDxR5I8i/w=; b=Y4LPIqQVXkUmCKWLV1+FPNIq0oqGJSlpFv8gD/9wYmsa/6je7JarELR6CLvUYjdr1/ WCanyqEltB07szYnuwKXHGSxZzONLF0XMKHFVfT2ZN4kJpp6iZR4ju6PUVHpABSKq+g3 Lb2bXV0I2SKOwvXERi8raY+akah9clwgVb310= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1727323640; x=1727928440; h=content-disposition:mime-version:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=jpB2o9Lcq3InykYwK98eaJdkLVRr1v20ZpDxR5I8i/w=; b=FRIDjRy7CZGvjAA0nIfXauTQ4JZKjDO3vjdtnjTKGQLSCCppZSOPhbN/XY9yzNe1+Y qGB3CSYKg2PcNCwUy69XSo25qq/eC8L396ZTXuKFU45AlS/0fMuf0z3uwOCf41Y31CRB Z0PQhecMlEP/xwMHn+9wLMSqX20RdfOT1HRLgGMCfrMUESBiIj9qxlMUc8nbkjoS99ff 8raZM7FYfWe12il2lcSegi97Fp+nx6Hto4Td8WZEpDrpTzgRJTuwhixs1smk6rtEftRY jG/1e7yVsgpEsuzBk3aL+f+jX5NptfdJ2+V6WZo1TrOjiFBJSVpfgZZCKiuKWTHAOV9J 33eA== X-Forwarded-Encrypted: i=1; AJvYcCVtWaDYMosPpAD7gBybC2KkDBrZrgoOgjrJTZExFwcQ8WkwH1GGScXVDP5IaNeVgvnzFGHuO9p0Xg==@kvack.org X-Gm-Message-State: AOJu0YwR/xZ7tmYsg/yX09qHvHYaCx0Nwr5z+0VyytJf7p1mGkR7ADEC zfRTkIet8hWxtIA/iA/VKmaDAiI4lHumVJ5TSJ54Z/d5I66SkG/MtYcaq/YLZA== X-Google-Smtp-Source: AGHT+IEN3wrY3tUtf0ODn1wPieKbhlnlxVQJtVCwNWWRHvJN87FWLY/rpFmUu+12l2Qac1CwiS1Y1Q== X-Received: by 2002:a05:6a21:58b:b0:1d2:eaea:356c with SMTP id adf61e73a8af0-1d4e0c22054mr6731383637.41.1727323640393; Wed, 25 Sep 2024 21:07:20 -0700 (PDT) Received: from google.com ([2401:fa00:8f:203:1560:84f:e0c8:d5d6]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-71afc84447csm3427092b3a.55.2024.09.25.21.07.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 Sep 2024 21:07:19 -0700 (PDT) Date: Thu, 26 Sep 2024 13:07:15 +0900 From: Sergey Senozhatsky To: Petr Mladek , John Ogness , Catalin Marinas Cc: Steven Rostedt , Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-serial@vger.kernel.org Subject: [next-20240925] possible circular locking: uart vs kmemleak Message-ID: <20240926040715.GC11458@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: CF3AE1C0008 X-Stat-Signature: jhk1jsk965np7o44ppdk5qs579zp7atj X-Rspam-User: X-HE-Tag: 1727323641-234614 X-HE-Meta: U2FsdGVkX1+eqH7vU+Bf6Z5xh9nkgNnM40NbAYPUZOywozkweU3yA8wAO/P2p1/iKxWu2BrVcX3u/Bo5YNuTbWajNbs0xQXI0XPu2KaGiu+7aR0C6hn8O1eNXN4P0klFYoMYS0NgFagciRkO2fufz5OOjpLpR7ZM/6v7K41zqRSirTwFYvsObVWrN9TgK4DGY/e/c59oF1hRINBbTW2wpN3wWkQ/rFEdC7EaWzc6hXQ1hH438bG9CWLhVV5lAMIZIZO6CjFaW2iQ5EcWbrwMDnD+PiYL2/a5C8eXOYMums1R3DCIStuKANbmvMwnKFaa71wIZmaaxYj0yeAsTlbIdYr3fQHbClcx8wcmohPgmLqw64ZEnEff3tvvpg1ISEkOUWE1h9rCtCgS7eVFywKDhZcaNZ42aW0fyxaEd9nzRgNfV0wfhDGTqBqslSGnSQ89xVfcESyZnZCQIRmzlLuG3CXBP7ky2oTvFGOHMNsXdXh/ROap5HZKIuMjGXf+PknIC+ljpT+9ZkPAIPeo+n8ZklKMKNEQH1hzkxtnqCYIvmEK2YxJ+V+n6rmeY+Iwrav81+6bXqaAyqbeOdSpyhQBBgbccv+Hhb7Jl51yAYLh+fbhZ5tVQrDrEwlESW1fK0NNjhSDnzMHB5y0rOLOa3mI8WZ0jQ6XE586X0frb7LwOPcWzfUKRTgtzbsb6LVUR6JbdTIoJnD8k6YkXpYvRIwcUH5brKBahzTgfdz8Pej2fgs2VV5B51inf2Jay6WWTmcSmDs/lNiD3wIoPMmYhKBePqzJpXfTC5xI5YHUdCyd89gLBl99emjxRKXlL3Td5AZ89kJ5G2Mm4w6KvA/gcLP9dNVVkuY/rBdy7hlpbih2lObk74MbhMK73UNFS7/Tt5IGJOci5g6aV/qVTRaDBY1m7RxSPlqMI7dXHaGyTjRPa5vX3jN/TM1BrVGMdKQjo7E3Aiu3/YcJ1/LFe757kSF KUajzZNQ 72/VH4cbArHWNIaj7KHhmEoIyZgxceB2o7RlPxTdRbbxuN6bHQE9OUhCRmTVqNv7xsSjVXYR2t6K3P32qSBB/QtyMh8ojT+r/eh4axhegyrwAh+3WP89gxZR8/3amNEn4K5OrZQ859yNPlFHjtG9Ri5TmwMH91kV6psaYWrPkeXS96se6vw6LbCc9+HcLEcBy64FBd1iqAq0txFMc4Z/BkOsOcRVY6rtb5zhwuvV7IjAt5zGBH1DjluqlQSo4Sd/ptdGRuqInTDlXJGx9sa7UUqfHP6shOF9HlvP+xVTK+K4eaElgjUaDKLViDRxyamcnewi+0DHggWHfFOtxodvtll7r6EZ62ucdTkP26I/NwC8NVms= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000012, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Greetings, Ran into the following issue today. It's sort of interesting, not sure what even to do about it. The uart -> tty -> mm /* kmalloc -> kmemleak */ chain looks problematic, it certainly overlaps with mm -> printk -> uart /* which can kmalloc and re-enter mm -> kmemleak? */ chain. [ 40.056844] ====================================================== [ 40.056845] WARNING: possible circular locking dependency detected [ 40.056847] 6.11.0-next-20240925+ #729 Tainted: G W N [ 40.056849] ------------------------------------------------------ [ 40.056850] modprobe/431 is trying to acquire lock: [ 40.056851] ffffffff83cef3e0 (console_owner){-...}-{0:0}, at: console_flush_all+0xd9/0x9d0 [ 40.056859] [ 40.056859] but task is already holding lock: [ 40.056859] ffffffff83ed97d8 (kmemleak_lock){-.-.}-{2:2}, at: kmemleak_free+0x2e/0x70 [ 40.056866] [ 40.056866] which lock already depends on the new lock. [ 40.056866] [ 40.056867] [ 40.056867] the existing dependency chain (in reverse order) is: [ 40.056868] [ 40.056868] -> #2 (kmemleak_lock){-.-.}-{2:2}: [ 40.056872] _raw_spin_lock_irqsave+0x76/0xb0 [ 40.056876] __create_object+0x3a/0x110 [ 40.056878] __kmalloc_noprof+0x1ff/0x390 [ 40.056882] __tty_buffer_request_room+0x18b/0x4e0 [ 40.056887] __tty_insert_flip_string_flags+0x8b/0x3c0 [ 40.056889] uart_insert_char+0x211/0x7f0 [ 40.056893] serial8250_handle_irq+0x34a/0xb10 [ 40.056897] serial8250_default_handle_irq+0xaa/0x170 [ 40.056900] serial8250_interrupt+0xa7/0x130 [ 40.056902] __handle_irq_event_percpu+0x1e1/0x680 [ 40.056904] handle_irq_event+0x87/0x1c0 [ 40.056906] handle_edge_irq+0x201/0x9b0 [ 40.056910] __common_interrupt+0xb4/0x120 [ 40.056914] common_interrupt+0x78/0x90 [ 40.056917] asm_common_interrupt+0x22/0x40 [ 40.056921] default_idle+0xb/0x10 [ 40.056924] default_idle_call+0x6e/0xa0 [ 40.056927] do_idle+0x172/0x3c0 [ 40.056930] cpu_startup_entry+0x45/0x60 [ 40.056932] start_secondary+0x12b/0x130 [ 40.056935] common_startup_64+0x12c/0x137 [ 40.056938] [ 40.056938] -> #1 (&port_lock_key){-.-.}-{2:2}: [ 40.056942] _raw_spin_lock_irqsave+0x76/0xb0 [ 40.056945] serial8250_console_write+0xf5/0x1b10 [ 40.056947] console_flush_all+0x4fd/0x9d0 [ 40.056949] console_unlock+0x99/0x230 [ 40.056952] vprintk_emit+0x3b6/0x650 [ 40.056955] _printk+0x59/0x7b [ 40.056958] register_console+0x7fb/0xb40 [ 40.056960] univ8250_console_init+0x3b/0x6b [ 40.056965] console_init+0x11a/0x3bb [ 40.056970] start_kernel+0x22a/0x39b [ 40.056975] x86_64_start_reservations+0x26/0x2b [ 40.056979] copy_bootdata+0x0/0xb0 [ 40.056981] common_startup_64+0x12c/0x137 [ 40.056983] [ 40.056983] -> #0 (console_owner){-...}-{0:0}: [ 40.056986] __lock_acquire+0x3790/0x7830 [ 40.056992] lock_acquire+0x140/0x3b0 [ 40.056994] console_flush_all+0x482/0x9d0 [ 40.056996] console_unlock+0x99/0x230 [ 40.056999] vprintk_emit+0x3b6/0x650 [ 40.057001] _printk+0x59/0x7b [ 40.057003] __find_and_remove_object+0x106/0x120 [ 40.057005] kmemleak_free+0x3d/0x70 [ 40.057007] free_large_kmalloc+0x4d/0xb0 [ 40.057009] init_module+0x12/0xffb [zram] [ 40.057016] do_one_initcall+0x130/0x450 [ 40.057018] do_init_module+0x36a/0x890 [ 40.057021] __se_sys_finit_module+0x513/0x7e0 [ 40.057022] do_syscall_64+0x71/0x110 [ 40.057024] entry_SYSCALL_64_after_hwframe+0x4b/0x53 [ 40.057027] [ 40.057027] other info that might help us debug this: [ 40.057027] [ 40.057028] Chain exists of: [ 40.057028] console_owner --> &port_lock_key --> kmemleak_lock [ 40.057028] [ 40.057032] Possible unsafe locking scenario: [ 40.057032] [ 40.057033] CPU0 CPU1 [ 40.057033] ---- ---- [ 40.057034] lock(kmemleak_lock); [ 40.057035] lock(&port_lock_key); [ 40.057037] lock(kmemleak_lock); [ 40.057039] lock(console_owner); [ 40.057040] [ 40.057040] *** DEADLOCK *** [ 40.057040] [ 40.057041] 3 locks held by modprobe/431: [ 40.057043] #0: ffffffff83ed97d8 (kmemleak_lock){-.-.}-{2:2}, at: kmemleak_free+0x2e/0x70 [ 40.057048] #1: ffffffff83cef440 (console_lock){+.+.}-{0:0}, at: _printk+0x59/0x7b [ 40.057053] #2: ffffffff83cef050 (console_srcu){....}-{0:0}, at: console_flush_all+0xd9/0x9d0 [ 40.057057] [ 40.057057] stack backtrace: [ 40.057059] CPU: 11 UID: 0 PID: 431 Comm: modprobe Tainted: G W N 6.11.0-next-20240925+ #729 [ 40.057063] Tainted: [W]=WARN, [N]=TEST [ 40.057065] Call Trace: [ 40.057066] [ 40.057067] dump_stack_lvl+0xa3/0xeb [ 40.057071] print_circular_bug+0x136/0x1b0 [ 40.057074] check_noncircular+0x26a/0x370 [ 40.057078] __lock_acquire+0x3790/0x7830 [ 40.057085] lock_acquire+0x140/0x3b0 [ 40.057087] ? console_flush_all+0xd9/0x9d0 [ 40.057090] ? console_flush_all+0xd9/0x9d0 [ 40.057092] console_flush_all+0x482/0x9d0 [ 40.057094] ? console_flush_all+0xd9/0x9d0 [ 40.057096] ? console_flush_all+0xd9/0x9d0 [ 40.057100] console_unlock+0x99/0x230 [ 40.057103] vprintk_emit+0x3b6/0x650 [ 40.057107] _printk+0x59/0x7b [ 40.057110] __find_and_remove_object+0x106/0x120 [ 40.057113] kmemleak_free+0x3d/0x70 [ 40.057115] free_large_kmalloc+0x4d/0xb0 [ 40.057118] init_module+0x12/0xffb [zram] [ 40.057125] do_one_initcall+0x130/0x450 [ 40.057127] ? __cfi_init_module+0x5/0x5 [zram] [ 40.057133] ? stack_depot_save_flags+0x25/0x700 [ 40.057136] ? stack_trace_save+0xb3/0x150 [ 40.057140] ? kasan_save_track+0x3c/0x60 [ 40.057143] ? kasan_save_track+0x2b/0x60 [ 40.057145] ? __kasan_kmalloc+0x6e/0x80 [ 40.057147] ? do_init_module+0x16e/0x890 [ 40.057149] ? __se_sys_finit_module+0x513/0x7e0 [ 40.057151] ? do_syscall_64+0x71/0x110 [ 40.057156] ? entry_SYSCALL_64_after_hwframe+0x4b/0x53 [ 40.057160] ? stack_depot_save_flags+0x25/0x700 [ 40.057162] ? stack_trace_save+0xb3/0x150 [ 40.057165] ? __create_object+0x62/0x110 [ 40.057168] ? do_raw_spin_unlock+0x5a/0x950 [ 40.057170] ? __create_object+0x62/0x110 [ 40.057173] ? _raw_spin_unlock_irqrestore+0x31/0x40 [ 40.057176] ? __create_object+0x62/0x110 [ 40.057179] ? kasan_unpoison+0x49/0x70 [ 40.057182] ? __asan_register_globals+0x54/0x70 [ 40.057184] do_init_module+0x36a/0x890 [ 40.057189] __se_sys_finit_module+0x513/0x7e0 [ 40.057195] do_syscall_64+0x71/0x110 [ 40.057197] entry_SYSCALL_64_after_hwframe+0x4b/0x53