From nobody Tue Jun 16 01:42:15 2026 Received: from mail-24424.protonmail.ch (mail-24424.protonmail.ch [109.224.244.24]) (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 40927392811 for ; Wed, 15 Apr 2026 08:01:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=109.224.244.24 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776240103; cv=none; b=DSP8IzUp3t+AqQqM3/o2jKx7rMKO2p4oyJ2wFGE3AGhUxRDH6XrDu54BDi1ABDQGokcQwZLuMMVmsRk+maWDZXvqRTiTw/UeUa4Dc3YTld2ICLmYNH/5AwEu8lbANB53PgZ0A2duMoLRqlcu2WlBNIwATheFjK24ksZxqxYJl8Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776240103; c=relaxed/simple; bh=zH5R+3omkoQn/yAIM3vhsojb37s2SpmxgxeKfxNZIWA=; h=Date:To:From:Cc:Subject:Message-ID:MIME-Version:Content-Type; b=YS5lehiMECkomuqEg3nQBO2bha9CXdp4vohhZQi3Tk3HMLch6yOlJWbgYQVTxORDyqnbiSh7bosQabgQNXgMqE/D2gmJvDyYn3Gy804CnH4YrLgD9eoM4c5PNhI/epfwHRK0D98tiupN0oU9R19ScUvKBfPKKv1/3Xs0ycRZN2M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=proton.me; spf=pass smtp.mailfrom=proton.me; dkim=pass (2048-bit key) header.d=proton.me header.i=@proton.me header.b=VkAWM8Nl; arc=none smtp.client-ip=109.224.244.24 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=proton.me Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=proton.me Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=proton.me header.i=@proton.me header.b="VkAWM8Nl" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=proton.me; s=6eit5hjru5dlrjhlanp5minbjy.protonmail; t=1776240099; x=1776499299; bh=zH5R+3omkoQn/yAIM3vhsojb37s2SpmxgxeKfxNZIWA=; h=Date:To:From:Cc:Subject:Message-ID:Feedback-ID:From:To:Cc:Date: Subject:Reply-To:Feedback-ID:Message-ID:BIMI-Selector; b=VkAWM8NlrE1ffvGK4ivg14Cn6MX2ogD5bOObVAS9zVy074Sfj2tkhl87UmsM6HYan 9BE7OJ5EFjdLidik4H8cu58duoNFzvZGMyg+iETdRmCamJ8pbp3E6Lrzllch0IsGwX LCiwxUIN3e4j7/Dl/gERhuTGOS9JlamTiQnEQwf6S0p4Q3FNZKPDvr/StQmxTVvSFm K/QRNaH6cyp6rqjm7k4hZptjhdMdX2y8iA5meaJFed0cDnm4gvTIu8sN1U+WzThqf3 85goLcKDI5cKTWoJF4voZMIMInFvAvXVb1TdKrRcI96x6H3iZ7potRNU3Uo0f4Yorl zLaT4m2yRoggA== Date: Wed, 15 Apr 2026 08:01:37 +0000 To: "linux-serial@vger.kernel.org" , "gregkh@linuxfoundation.org" , "jirislaby@kernel.org" From: kpursoty@proton.me Cc: "linux-kernel@vger.kernel.org" , "linux-mips@vger.kernel.org" , "tsbogend@alpha.franken.de" Subject: [PATCH] serial: base: do not disable TX on hangup for console ports Message-ID: <1fpGAFo1KYyRDeGSGmaDWx6gXbV00C83qU_tep62Zu_cl9JfjpjWg8SKhw6z0owZ9eEMzXR2GnZ_U3V2PVi2R1fuGAmzgK43GYbWkCIBFf8=@proton.me> Feedback-ID: 133470881:user:proton X-Pm-Message-ID: 785f3e68caffacde9b766153f0d21ada41986603 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" serial_base_port_shutdown() calls serial_base_port_set_tx(false) unconditionally. When a TTY hangup occurs on a port that is also a registered kernel console, this permanently disables the console transmitter. uart_hangup() already guards against uart_change_pm(PM_OFF) for console ports (see the uart_console() check in uart_hangup()). Apply the same guard in serial_base_port_shutdown(): skip TX-disable if the port is a registered console. Without this fix, any path that calls uart_shutdown() on a console port - including TIOCSCTTY with force=3D1 (as used by init systems such as procd) - permanently silences all subsequent kernel console output. Signed-off-by: Kervin Pursoty --- drivers/tty/serial/serial_port.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/tty/serial/serial_port.c b/drivers/tty/serial/serial_p= ort.c --- a/drivers/tty/serial/serial_port.c +++ b/drivers/tty/serial/serial_port.c @@ -110,5 +110,14 @@ { struct serial_port_device *port_dev =3D port->port_dev; - serial_base_port_set_tx(port, port_dev, false); + /* + * Do not disable TX on a console port. When an init system calls + * TIOCSCTTY with force=3D1, the kernel hangs up the previous session, + * triggering uart_hangup() -> uart_shutdown() -> here. Stopping TX + * kills all kernel console output permanently. + * uart_hangup() already skips uart_change_pm(PM_OFF) for consoles + * via uart_console(); apply the same guard here. + */ + if (!uart_console(port)) + serial_base_port_set_tx(port, port_dev, false); } static DEFINE_RUNTIME_DEV_PM_OPS(serial_port_pm,