From nobody Wed Dec 17 00:05:04 2025 Received: from CWXP265CU008.outbound.protection.outlook.com (mail-ukwestazon11020128.outbound.protection.outlook.com [52.101.195.128]) (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 B5D8170824 for ; Thu, 11 Dec 2025 03:30:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.195.128 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765423816; cv=fail; b=UVgYXqIWR5YVva4vE9Dc9xRV1yOBKq+yV4C4DUHht59pXDNLUauR2Tjbm28mMQj0oc9EVEMJ1rrg86A5smbG0EoNlNE1X0rNOzvr4JkTUF5AWrHA+fVP98U4QK7ML7Tk6OpK8ufBKx5kI54VpnF/ZpOSO7BxMhPo8XUi9xgnOso= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765423816; c=relaxed/simple; bh=+IrM0sHE42DZ5E3ZbtckSXMy3uPh+cfH8dpccsoOxvs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=ngkH12hvYdaw3vQaCLoMsXgdOIIZVcEZbqHy65Vq2klH5Zk4/T2OFcIEMcyV0IBLLPMYqZ0t7MAWJ6SmH78swHcdPROKsDn0eoakZCr8g0tP4QB9/4TxKDl6JiYqCQdES0gURf4VYgVHHjC73l6MZowbC5JxGU/ZjIzkYI6DeYE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com; spf=pass smtp.mailfrom=atomlin.com; arc=fail smtp.client-ip=52.101.195.128 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=atomlin.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=XrDujtsbTmxqseUVIrE5LX0SN0dQHR9b3djgkpduoi7vGsxOUeCxSAMUCQTBurwCQCSTB7dqtfXgOqf13edAiNL+25Ebj0xdm7oumWHJ/VTBxnlCi1w96XcMnfh4Qk2bzAwE906568xT2CNtRE2VF+5gnr3G1XQNdaBcK//XPcs6b9nB073TnYjCFdUnw4yYiWd1/92QvosjgzMU20CUHMtXqwL3PNt3j3OyWSl8L/jr/ocu4PctH3TlopIP9Kkevwl4JbYo/sBM8ga2O0caNUq37O88y69pSsiLKGejbCUj/y1AROMcp8zEgFnxG72m2B+OC6of5HtRdHygNuGDJA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=9r9ZgiA0yo6+J4sES3SVdXwdvZXVuUQSjw1zdVP+HfY=; b=zQ5jJ6i9tYcGyY9MmrLXIj6CxKUHHirP7MJ1UX0V4mrQFE+EnLEX/+Edw9NUNyMmcz1fXduHTv/jrO7I+fc370M+0ElacASplR+L0KuQ53NDaLChSgYWcWcVOY6K5L4nY5FHm72aG9x9+W/CMijAM6DEUa/GDRpc+g8W2d0QovZF6oEIJOp3eOPACVWr85m12Cn+CrhHmJcxWDPaMRc5s2+RP5PBdP+ZJtoKPUug1jqo14P4gnbkY+yAVDkh7sD968DPKaj4le5d7f8Hfx26NIvDNNpmiBb1+RBn6YlCSy/dWJN4e/glgXan1vUCwU6ZuvxisX+ESxVQJZP+/Xf9RA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=atomlin.com; dmarc=pass action=none header.from=atomlin.com; dkim=pass header.d=atomlin.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=atomlin.com; Received: from CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:70::10) by CWLP123MB3569.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:69::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.10; Thu, 11 Dec 2025 03:30:12 +0000 Received: from CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM ([fe80::de8e:2e4f:6c6:f3bf]) by CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM ([fe80::de8e:2e4f:6c6:f3bf%5]) with mapi id 15.20.9412.005; Thu, 11 Dec 2025 03:30:12 +0000 From: Aaron Tomlin To: akpm@linux-foundation.org, lance.yang@linux.dev, mhiramat@kernel.org, gregkh@linuxfoundation.org, pmladek@suse.com Cc: sean@ashe.io, linux-kernel@vger.kernel.org Subject: [PATCH v2 1/2] hung_task: Consolidate hung task warning into an atomic log block Date: Wed, 10 Dec 2025 22:30:03 -0500 Message-ID: <20251211033004.1628875-2-atomlin@atomlin.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251211033004.1628875-1-atomlin@atomlin.com> References: <20251211033004.1628875-1-atomlin@atomlin.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN9PR03CA0643.namprd03.prod.outlook.com (2603:10b6:408:13b::18) To CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:70::10) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CWLP123MB3523:EE_|CWLP123MB3569:EE_ X-MS-Office365-Filtering-Correlation-Id: 1edb70a3-597f-4041-0058-08de386597c7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?fbP86tZMLlPza13QqWltU3x/kxzyt7B4jI2LoRQ1jNVDOMaPIAPfBPrCPPOn?= =?us-ascii?Q?nndswGANn07VZzixE0fQQfCLad7hKA11v8cIwEbj4xSHYZdMmvEBkaMVv3TP?= =?us-ascii?Q?0vhu6eUmcWev8GJA/S1I/nTecI0dGAC3SVyLOSvnFIdLbzfnMBTYOFAtWrEu?= =?us-ascii?Q?fs9Ve4innp+8wQMs5+q5Y/FmqaelA2qp5rb0LhsgrEoYb89P5k+/SK7VjcMu?= =?us-ascii?Q?PQgDr2z5YuQhhDYfaWVSEN8qbKIdQcr5z+W+CADuX3DGjiw0IShzBOJ0KLEq?= =?us-ascii?Q?98BLF/hQ/T3sKGf3Z7HORqAmWnGQLi0al6l74eefid4yB4vPde9ryFe8h11x?= =?us-ascii?Q?nKGfqRHNBD5XhTDadttT6qfEwdjNfzPTpTtVXQ1x4ECqG7+XxG19bxvOzqAB?= =?us-ascii?Q?2KgwvRpn73WmXgaNA55X9nR1AvxZdcakEJct3ZBr/IPk2+mB8uO57mue/Nx0?= =?us-ascii?Q?K34NanNM5gFww/dx6/wWzJxh6zY6Gzz2+LHfeW8YpDxKvPltWqwMBMz4YHaI?= =?us-ascii?Q?iMIXMDnom1g14Tmi5ym1HMAScr8tIxETo/zpiQDLzPKOk/TkgGckKGTHwlqP?= =?us-ascii?Q?4wbzgLa0aTcIMKpEFjsV0Qha2jdZCf+QxhFzPQKZ1rueQUBZY12obrGY3RU1?= =?us-ascii?Q?OySq9gXUXw32f3DmG7e3o1iYJ0Vbs17KqKAtuTNiV407FJ57FtdRm+gE1CSV?= =?us-ascii?Q?XflsHLuBLh8+vIzR+r+Orfzx8ir1tOC9V0GrEqNOURZXDLdurDPkoM5QPkyt?= =?us-ascii?Q?1ah6wGxCL9zCPpdRRHEg5eDLDIIyygclF+bIKRSQvoQQKd/C99tE2s1s+qwn?= =?us-ascii?Q?8Q+Ro0M9GFk2d+sz8G0fPzClWKwfZvO/7vjDT/NDnGiYZvhqsN09jEPFVMMd?= =?us-ascii?Q?Ub3pTAACUKOQQgpUsCAHCyfMvS2NoKJ/d//8hKd8mF2Re1NKKuQfd6FU9U6S?= =?us-ascii?Q?CLC30gQ1BMcI99L+BgiCnzkdELUUxylfXpv7KhKq2NjHEJf3YPRfSovo4b4S?= =?us-ascii?Q?p6RYkD7skj/W1+JAyf3pyVCA16Y3P/ANwzDChSVVpCdng2Dk+NPVJLu3CKA3?= =?us-ascii?Q?UZIb0vzjoMF7VJDnsTW/0oT3cKCoD+aRlthRkQks/7ze9nLReOkZ4COnzYYG?= =?us-ascii?Q?HOJdYBSskK5L6Z1XfaWaIyyp1NPAmzYPNe9oPzKS5tz9xJNBQE4tBAr/DV0H?= =?us-ascii?Q?kKwQ1FHoFXyIp/eCtX0gNptlcccRU7gdqBKpXfyeLYHnyTagTcSv2Bi7vKpL?= =?us-ascii?Q?yY9cNYMDFH6A3ubRcePxwndjbZb4tCScWFiErZ6VLrOMo/yYJyiRkJrBflYZ?= =?us-ascii?Q?g9bRbyayhOjHSmFctxTLm4ZMnwgDQsVt1Iv+Y5HrJedtbWjvL7/Tk/J7yRHp?= =?us-ascii?Q?lLGSKBe+B9FKMIk2MdE17KxcPSKVKpQ0Fr3WQF2rRLYUidbp0pnAkc+sxdUs?= =?us-ascii?Q?lBfLcw8JjLp8FNRYp6pZxEfGjdZiJ9cK?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?cxCcbOG6JAjnu+N/VUS+ei9vU9C3wYjRcBiLfFAhkmB6n+5l4ekjXOhLzbdD?= =?us-ascii?Q?uMKWEHBaNrwmfcvat61Sg071VvEiblWvpjk8YuDITRwDqtis1fEpLnjOveGO?= =?us-ascii?Q?Fq/l0T/X9SPAm/ax8pDCoeKmhR0cKAfT751Z80UFndLxWJTHhYZX5Zvn2AiZ?= =?us-ascii?Q?7Qphzw/O07465SfHrnf/Zlo82ll29Zzufgcz5Fcq3cHZAazObYZe6Dn9OnD3?= =?us-ascii?Q?p/oGeF6woKvuGtSOeyaZuKme/91ZukP/7ds/5sr0eGBA365jCBjUVlpeAByf?= =?us-ascii?Q?PL++K5yr35SLp3LZRvFwWx+7/lNCEvpjLfOu2q8VXUzca88xMcg4uQHm47aT?= =?us-ascii?Q?8gkE089jWsw+AKX7dfNBVz3d9JMRkUpXyIGJ2et/tuUgNgZnurLYK5s+hYjv?= =?us-ascii?Q?W/TOV5fp8h6OD7pKvl8TSf02WfLqq3GfMHPaAqxHck1ZFn9WP6LhMUI/0QuQ?= =?us-ascii?Q?X6wOPgPgBIwoOdhyYp2aKIbDCFBoHtKPQHp5AameID7TEQMX7+8OxKRl5vjt?= =?us-ascii?Q?82dUA9zaajWMy/53XFkWq5EL9SyKtcSpldE96QSIL9NbJkbOKueVBe99WyQh?= =?us-ascii?Q?DsflhjLUNnIxu0YIlBAvEpDoL/S584OuWUKLcU1Jkn6GHXjFNlyglSMeOSAO?= =?us-ascii?Q?LBikB5LIjlJ6JXkO28eD9cjMKQdpBzkSHi0r5W+FhwuLR7opmhT2I34vvnp6?= =?us-ascii?Q?xd8MKnxnoylxZ/z3ZZwc/grxi11xZ5IyvRg2EBrt0EOwE3uri9zdcWzCxsKx?= =?us-ascii?Q?LKgFuovaA6f+CXk+R8W53hDSWRzl35hHGxBLpEEHXNDP5G6o/hynmGKTuDYr?= =?us-ascii?Q?nCQxS8czPjVtjU1tY3cqilZHIiRBNF91M+fb6fUfa33axS5C7Xn2JOW9mIuy?= =?us-ascii?Q?+28NGmGQ6m2+CEOn8d3novxhHY/U+frGlTVo2Uz+w4uaNSGk9MsjQg1Tis2h?= =?us-ascii?Q?jCQLE5aThTUqoVNINOZmTI/9Ft9WDodeDmQVj39Xt13EM5ncdiDAY7AZ+tCW?= =?us-ascii?Q?ynYUlfCh1yC1mW71LZtlSjrUf25sF643dl3veHg4e+Pv+/huyb2bIa/pZCBZ?= =?us-ascii?Q?hCsI23vPF5zW6VJMJEkcNGc6W7gbVAKsjACTpS9+0AgFLWNsQxHlgaR4yvb3?= =?us-ascii?Q?SMsbJOg9lv3GDjIyeiCE/b2xSHK8qDeKXpTHEMCly+lKJPbPRNYwK1lRfTSM?= =?us-ascii?Q?a6njVj8Wok8E/TZEmiMW14LrOknvYL6N2W2rer1ZXuJcOx0OrpxRHOOp2ukC?= =?us-ascii?Q?YzQN7u2w3ZIo8mLLb5OJuID6h9TfbrP9RhWGbs3cvloCo5HFy7XdrfHP1Dso?= =?us-ascii?Q?tNcrugz9I80tLSt4JVnU7kxSMYuv9aCaRFmLNixLQoCCXqol610nxyKcu4v5?= =?us-ascii?Q?dXwCpZvI9RCwyzUHzdaP3vr5IIxO1YQ3jKrLx7fHGYjIkn3XBh3sxZv+X4fr?= =?us-ascii?Q?jtCDbAvmNHDouUp3A7nMdh3NwwzzjoQjpzX/LnZ3fkOIxfL/iAxXGGEAEX/i?= =?us-ascii?Q?xnT0d0FBwtmrJKKCdz1xm2lwpOTH70hv0GfxRTg9bjopiwc/8X3enw8bkcY7?= =?us-ascii?Q?JYxdMcswTuh5gy1LpPae8guUuulSw6TCdj7O8nJ9?= X-OriginatorOrg: atomlin.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1edb70a3-597f-4041-0058-08de386597c7 X-MS-Exchange-CrossTenant-AuthSource: CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Dec 2025 03:30:12.3523 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e6a32402-7d7b-4830-9a2b-76945bbbcb57 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: D41cqYBhKjTZNup+3Ir2OXtDU9yBw0lR/wmuGR4uUmTeEM6x3arfok2qDRkS5dumh6WlcVNaYeJt61Zec7Vg1Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CWLP123MB3569 Content-Type: text/plain; charset="utf-8" Consolidate the multi-line console output in check_hung_task() into a new helper function, hung_task_diagnostics(). This patch ensures the entire diagnostic block (task info, kernel version, and sysctl advice) is logged to the ring buffer via a single pr_err() call. This is critical in a concurrent environment to prevent message lines from interleaving with other CPU activity, thus maintaining contextual integrity of the warning message. Signed-off-by: Aaron Tomlin --- kernel/hung_task.c | 39 +++++++++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/kernel/hung_task.c b/kernel/hung_task.c index d2254c91450b..6f3fb26378b5 100644 --- a/kernel/hung_task.c +++ b/kernel/hung_task.c @@ -223,6 +223,34 @@ static inline void debug_show_blocker(struct task_stru= ct *task, unsigned long ti } #endif =20 +/** + * hung_task_diagnostics - Print structured diagnostic info for a hung tas= k. + * @t: The struct task_struct of the detected hung task. + * + * This function consolidates the printing of core diagnostic information + * for a task found to be blocked. This approach ensures atomic logging + * of the multi-line message block, preventing interleaving by other + * console activity, thus maintaining contextual clarity. + */ +static inline void hung_task_diagnostics(struct task_struct *t) +{ + unsigned long blocked_secs =3D (jiffies - t->last_switch_time) / HZ; + const char *coredump_msg =3D ""; + const char *disable_msg =3D + "\"echo 0 > /proc/sys/kernel/hung_task_timeout_secs\"" + " disables this message.\n"; + + if (t->flags & PF_POSTCOREDUMP) + coredump_msg =3D " Blocked by coredump.\n"; + + pr_err("INFO: task %s:%d blocked for more than %ld seconds.\n" + " %s %s %.*s\n%s%s", + t->comm, t->pid, blocked_secs, + print_tainted(), init_utsname()->release, + (int)strcspn(init_utsname()->version, " "), + init_utsname()->version, coredump_msg, disable_msg); +} + static void check_hung_task(struct task_struct *t, unsigned long timeout, unsigned long prev_detect_count) { @@ -252,16 +280,7 @@ static void check_hung_task(struct task_struct *t, uns= igned long timeout, if (sysctl_hung_task_warnings || hung_task_call_panic) { if (sysctl_hung_task_warnings > 0) sysctl_hung_task_warnings--; - pr_err("INFO: task %s:%d blocked for more than %ld seconds.\n", - t->comm, t->pid, (jiffies - t->last_switch_time) / HZ); - pr_err(" %s %s %.*s\n", - print_tainted(), init_utsname()->release, - (int)strcspn(init_utsname()->version, " "), - init_utsname()->version); - if (t->flags & PF_POSTCOREDUMP) - pr_err(" Blocked by coredump.\n"); - pr_err("\"echo 0 > /proc/sys/kernel/hung_task_timeout_secs\"" - " disables this message.\n"); + hung_task_diagnostics(t); sched_show_task(t); debug_show_blocker(t, timeout); =20 --=20 2.51.0