[{"id":3687689,"web_url":"http://patchwork.ozlabs.org/comment/3687689/","msgid":"<87lddvy2dl.fsf@jogness.linutronix.de>","list_archive_url":null,"date":"2026-05-07T09:50:46","subject":"Re: [PATCH tty v4 2/6] serial: Replace driver usage of UPF_CONS_FLOW","submitter":{"id":207,"url":"http://patchwork.ozlabs.org/api/people/207/","name":"John Ogness","email":"john.ogness@linutronix.de"},"content":"Hi,\n\n(This email is particularly directed at the Samsung folks.)\n\nResponding to Sashiko:\n\nhttps://sashiko.dev/#/patchset/20260506121606.5805-1-john.ogness%40linutronix.de\n\nOn 2026-05-06, Sashiko wrote:\n>> diff --git a/drivers/tty/serial/samsung_tty.c b/drivers/tty/serial/samsung_tty.c\n>> index e27806bf2cf3e..2f94fc798cffb 100644\n>> --- a/drivers/tty/serial/samsung_tty.c\n>> +++ b/drivers/tty/serial/samsung_tty.c\n>> @@ -319,7 +319,7 @@ static void s3c24xx_serial_stop_tx(struct uart_port *port)\n>>  \tourport->tx_enabled = 0;\n>>  \tourport->tx_in_progress = 0;\n>>  \n>> -\tif (port->flags & UPF_CONS_FLOW)\n>> +\tif (uart_cons_flow_enabled(port))\n>>  \t\ts3c24xx_serial_rx_enable(port);\n>\n> This isn't a new bug introduced by this patch, but does this code\n> result in a recursive spinlock acquisition and deadlock when console\n> flow control is enabled?\n>\n> The serial core framework calls port->ops->stop_tx() with the\n> port->lock spinlock already held. When uart_cons_flow_enabled(port)\n> evaluates to true, s3c24xx_serial_stop_tx() invokes\n> s3c24xx_serial_rx_enable().\n>\n> Looking at s3c24xx_serial_rx_enable(), it unconditionally attempts to\n> acquire the exact same lock again:\n>\n> static void s3c24xx_serial_rx_enable(struct uart_port *port)\n> {\n> \tstruct s3c24xx_uart_port *ourport = to_ourport(port);\n> \tunsigned long flags;\n> \t...\n> \tuart_port_lock_irqsave(port, &flags);\n> \t...\n> }\n>\n> Because spinlocks are not recursive in the kernel, it appears this\n> sequence would cause an immediate deadlock on the same CPU.\n\nAlthough out of scope for my series, the reported issue is real. Perhaps\nsomething for Krzysztof or Alim to look into.\n\n>> @@ -493,7 +493,7 @@ static void s3c24xx_serial_start_tx(struct uart_port *port)\n>>  \tstruct tty_port *tport = &port->state->port;\n>>  \n>>  \tif (!ourport->tx_enabled) {\n>> -\t\tif (port->flags & UPF_CONS_FLOW)\n>> +\t\tif (uart_cons_flow_enabled(port))\n>>  \t\t\ts3c24xx_serial_rx_disable(port);\n>\n> Similarly here, s3c24xx_serial_start_tx() is also called with\n> port->lock held, and s3c24xx_serial_rx_disable() will attempt to\n> acquire port->lock again:\n>\n> static void s3c24xx_serial_rx_disable(struct uart_port *port)\n> {\n> \tstruct s3c24xx_uart_port *ourport = to_ourport(port);\n> \tunsigned long flags;\n> \t...\n> \tuart_port_lock_irqsave(port, &flags);\n> \t...\n> }\n>\n> Could this pre-existing locking issue in the samsung_tty driver be\n> addressed so that the rx enable/disable helpers do not try to take the\n> port lock when it is already held by the caller?\n\nAlso legitimate. But out of scope for my series.\n\nJohn Ogness","headers":{"Return-Path":"\n <SRS0=Mo0K=DE=vger.kernel.org=sparclinux+bounces-6763-patchwork-incoming=ozlabs.org@ozlabs.org>","X-Original-To":["incoming@patchwork.ozlabs.org","sparclinux@vger.kernel.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","patchwork-incoming@ozlabs.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n secure) header.d=linutronix.de header.i=@linutronix.de header.a=rsa-sha256\n header.s=2020 header.b=leWMdPdy;\n\tdkim=pass header.d=linutronix.de header.i=@linutronix.de\n header.a=ed25519-sha256 header.s=2020e header.b=Tq2nphDt;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=ozlabs.org\n (client-ip=2404:9400:2221:ea00::3; helo=mail.ozlabs.org;\n envelope-from=srs0=mo0k=de=vger.kernel.org=sparclinux+bounces-6763-patchwork-incoming=ozlabs.org@ozlabs.org;\n receiver=patchwork.ozlabs.org)","gandalf.ozlabs.org;\n arc=pass smtp.remote-ip=\"2600:3c15:e001:75::12fc:5321\"\n arc.chain=subspace.kernel.org","gandalf.ozlabs.org;\n dmarc=pass (p=none dis=none) header.from=linutronix.de","gandalf.ozlabs.org;\n\tdkim=pass (2048-bit key;\n secure) header.d=linutronix.de header.i=@linutronix.de header.a=rsa-sha256\n header.s=2020 header.b=leWMdPdy;\n\tdkim=pass header.d=linutronix.de header.i=@linutronix.de\n header.a=ed25519-sha256 header.s=2020e header.b=Tq2nphDt;\n\tdkim-atps=neutral","gandalf.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c15:e001:75::12fc:5321; helo=sin.lore.kernel.org;\n envelope-from=sparclinux+bounces-6763-patchwork-incoming=ozlabs.org@vger.kernel.org;\n receiver=ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de\n header.b=\"leWMdPdy\";\n\tdkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de\n header.b=\"Tq2nphDt\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=193.142.43.55","smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=linutronix.de","smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=linutronix.de"],"Received":["from mail.ozlabs.org (mail.ozlabs.org [IPv6:2404:9400:2221:ea00::3])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4gB6vQ0Z3Bz1y04\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 07 May 2026 19:50:58 +1000 (AEST)","from mail.ozlabs.org (mail.ozlabs.org [IPv6:2404:9400:2221:ea00::3])\n\tby gandalf.ozlabs.org (Postfix) with ESMTP id 4gB6vP73C0z4w1g\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 07 May 2026 19:50:57 +1000 (AEST)","by gandalf.ozlabs.org (Postfix)\n\tid 4gB6vP6bnPz4w9h; Thu, 07 May 2026 19:50:57 +1000 (AEST)","from sin.lore.kernel.org (sin.lore.kernel.org\n [IPv6:2600:3c15:e001:75::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby gandalf.ozlabs.org (Postfix) with ESMTPS id 4gB6vL0WySz4w1g\n\tfor <patchwork-incoming@ozlabs.org>; Thu, 07 May 2026 19:50:54 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sin.lore.kernel.org (Postfix) with ESMTP id EDCEA3004437\n\tfor <patchwork-incoming@ozlabs.org>; Thu,  7 May 2026 09:50:52 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 1B40F3793BC;\n\tThu,  7 May 2026 09:50:51 +0000 (UTC)","from galois.linutronix.de (Galois.linutronix.de [193.142.43.55])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 97F4B19992C;\n\tThu,  7 May 2026 09:50:49 +0000 (UTC)"],"ARC-Seal":["i=2; a=rsa-sha256; d=ozlabs.org; s=201707; t=1778147457; cv=pass;\n\tb=NzTcmZK161N/Yw+C8ckNiIR+E7uZBeLP6BCYBeoIwp4rE4V2wEgynRXbWqiIPtGESvN/T38bHjZIqX1l2YKdLtKddW36s0jLdUGKl4jn+36/lAVUmTfFIZwctu2+D11MXmg8ntG4nNr0C7BhACksCtH6ZfZViOgAR+FUp9TDevdWDcQ9G3oknNjIR+fy9gEiBqBda75tjiLJZ10mXCG10W//aiYc2CUJuKXcr5McS4AHnMKdf3Hg7S64ROuCEHK6ss6sC8kj1gm/JNfdM8LilPnZXyQBIA1TBxytaT+M8SmVLPUAhnGvmy78GIPHMGXZ5rdsBcyPFuwpXpTur64HUA==","i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1778147451; cv=none;\n b=gX5ff4EBeKaQNbP0+yYSXvXG9oiKiNZNBJO+h6HHd/mXUMyNJGrtk9viS7gHsVoyZLR7LGjmT68Grr9PJK17vosDNVN8+b4BnFnF1F1jWH7+Ok83v3qRzAJs7UyYBLf15bF3oIxJm7UnkLYxg6leTN7Gz4AcJAplfgz9xQfQ7Ls="],"ARC-Message-Signature":["i=2; a=rsa-sha256; d=ozlabs.org; s=201707;\n\tt=1778147457; c=relaxed/relaxed;\n\tbh=NBH0jyNZrOzmMWTTXswtxOpylKAjIZZm3k5vmlmFTBY=;\n\th=From:To:Cc:Subject:In-Reply-To:References:Date:Message-ID:\n\t MIME-Version:Content-Type;\n b=kqWXJKuhSI8FnPK5DYZY41MK6vG3uJgNvg14M1fLOH+Xh9JZpUrLDlFARtoO2RvEmGrGSiJ6+KH4GF9exK3/ES6j3A92ag++B9xveY8pxIDkjpKLmXfFlOzZyNodhnVW1RNarORbyGvsmcEosWRBnlrOba/hKt4iVkrJVKoBOS+v8SF51/WIqt+0ppRrWpinzYbriJN7fUeQDfa8omZLgAwURaWrwqSOWinVSjnp5HcNPgGQuqU/32YZAJtYeZg8dKL/UoZMqcmW8V4sJ8NJ87+oqDlESVL1BxZ+NdDE5aZXL1bOoGGzQG4OWhTbJhJ46U/jdTSg+Dz/a6bR5MwQcA==","i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1778147451; c=relaxed/simple;\n\tbh=6/O4g5sKOzC1QkhFRj0XV8eT+wsdg3hxXAqmP1cUrkw=;\n\th=From:To:Cc:Subject:In-Reply-To:References:Date:Message-ID:\n\t MIME-Version:Content-Type;\n b=aK0WwUYIfNboo2tFVHzKUwTpRGumG5daSKkymYg3gkAf1e/MaC8asdlhrvo5giPojaOppK34xhAd0keFw4r38AznyW/tbTTi2EGyz2MjqhBduzmWLfzvIKAFQh6SFzIZrp6pJrlZ5HFZ3/rQcvk40pPYQpIc5Bg30njPn8A8YHw="],"ARC-Authentication-Results":["i=2; gandalf.ozlabs.org;\n dmarc=pass (p=none dis=none) header.from=linutronix.de;\n dkim=pass (2048-bit key;\n secure) header.d=linutronix.de header.i=@linutronix.de header.a=rsa-sha256\n header.s=2020 header.b=leWMdPdy;\n dkim=pass header.d=linutronix.de header.i=@linutronix.de\n header.a=ed25519-sha256 header.s=2020e header.b=Tq2nphDt; dkim-atps=neutral;\n spf=pass (client-ip=2600:3c15:e001:75::12fc:5321; helo=sin.lore.kernel.org;\n envelope-from=sparclinux+bounces-6763-patchwork-incoming=ozlabs.org@vger.kernel.org;\n receiver=ozlabs.org) smtp.mailfrom=vger.kernel.org","i=1; smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=linutronix.de;\n spf=pass smtp.mailfrom=linutronix.de;\n dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de\n header.b=leWMdPdy;\n dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de\n header.b=Tq2nphDt; arc=none smtp.client-ip=193.142.43.55"],"From":"John Ogness <john.ogness@linutronix.de>","DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de;\n\ts=2020; t=1778147447;\n\th=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n\t to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n\t in-reply-to:in-reply-to:references:references;\n\tbh=NBH0jyNZrOzmMWTTXswtxOpylKAjIZZm3k5vmlmFTBY=;\n\tb=leWMdPdyfke1PG9kBHkhG5M8+CkYZqJLTLAqeCjYiODinG+/j5IfywZS4BLtwSeOnAhR6D\n\tpw/eSfCLzgoMv61xYkcFltHJt75Aj5NL592c/QId6geF4NJndJWESdEbRgVpzZJaKCAEAk\n\tS46RxvcRAIZA9ahHYcTAxrtRU+Lc+i248yF5/kVapuIJ8z3dVEqbikVTF3jyXqEuOI+x3T\n\t3bevzAN4DzkSVknLp5v6SvQ6O8TC9Rp1nxTnpME2Yz+kDQdJ86k1KXyx7rg0SDmJQCUrew\n\tJl0XoiQVfdJ919Xfgwb85G6jo2BOn+QjO9UZmH6nOsM9NQzLPu3et2OdyeeYug==","v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de;\n\ts=2020e; t=1778147447;\n\th=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n\t to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n\t in-reply-to:in-reply-to:references:references;\n\tbh=NBH0jyNZrOzmMWTTXswtxOpylKAjIZZm3k5vmlmFTBY=;\n\tb=Tq2nphDtcvBpFn3zxihLGoMnyKDvoUWprRrJufVzWFnDKGTEAFUEQ7hCJcHsFd6FLZEOal\n\tHAqr18N14WAjRFBg=="],"To":"Greg Kroah-Hartman <gregkh@linuxfoundation.org>,\n\tJiri Slaby <jirislaby@kernel.org>,\n\tKrzysztof Kozlowski <krzk@kernel.org>,\n\tAlim Akhtar <alim.akhtar@samsung.com>","Cc":"Andy Shevchenko <andy.shevchenko@gmail.com>, linux-kernel@vger.kernel.org,\n \"David S. Miller\" <davem@davemloft.net>,\n Ilpo =?utf-8?b?SsOkcnZpbmVu?= <ilpo.jarvinen@linux.intel.com>,\n Andy Shevchenko <andriy.shevchenko@linux.intel.com>,\n Thomas Fourier <fourier.thomas@gmail.com>, Kees Cook <kees@kernel.org>,\n linux-serial@vger.kernel.org, linux-arm-kernel@lists.infradead.org,\n linux-samsung-soc@vger.kernel.org, sparclinux@vger.kernel.org","Subject":"Re: [PATCH tty v4 2/6] serial: Replace driver usage of UPF_CONS_FLOW","In-Reply-To":"<20260506121606.5805-3-john.ogness@linutronix.de>","References":"<20260506121606.5805-1-john.ogness@linutronix.de>\n <20260506121606.5805-3-john.ogness@linutronix.de>","Date":"Thu, 07 May 2026 11:56:46 +0206","Message-ID":"<87lddvy2dl.fsf@jogness.linutronix.de>","Precedence":"bulk","X-Mailing-List":"sparclinux@vger.kernel.org","List-Id":"<sparclinux.vger.kernel.org>","List-Subscribe":"<mailto:sparclinux+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:sparclinux+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","Content-Type":"text/plain","X-Spam-Status":"No, score=-0.6 required=5.0 tests=ARC_SIGNED,ARC_VALID,\n\tDKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DMARC_PASS,\n\tHEADER_FROM_DIFFERENT_DOMAINS,INVALID_DATE_TZ_ABSURD,\n\tMAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=disabled\n\tversion=4.0.1","X-Spam-Checker-Version":"SpamAssassin 4.0.1 (2024-03-25) on gandalf.ozlabs.org"}}]