From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: Jiri Slaby <jirislaby@kernel.org>,
Joshua Rogers <linux@joshua.hu>, Chris Mason <mason@kernel.org>,
Josef Bacik <josef@toxicpanda.com>
Cc: "Tony Lindgren" <tony@atomide.com>,
"Rafael Gago Castano" <rgc@hms.se>,
"Florian Fainelli" <f.fainelli@gmail.com>,
"Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>,
"Andy Shevchenko" <andriy.shevchenko@linux.intel.com>,
"Peter Hurley" <peter@hurleysoftware.com>,
"Heikki Krogerus" <heikki.krogerus@linux.intel.com>,
"Crescent Hsieh" <crescentcy.hsieh@moxa.com>,
"Frank Li" <Frank.Li@nxp.com>, "Sherry Sun" <sherry.sun@nxp.com>,
"Sascha Hauer" <s.hauer@pengutronix.de>,
"Pengutronix Kernel Team" <kernel@pengutronix.de>,
"Fabio Estevam" <festevam@gmail.com>,
"Manivannan Sadhasivam" <mani@kernel.org>,
"Olof Johansson" <olof@lixom.net>,
"Andreas Färber" <afaerber@suse.de>,
"Arnd Bergmann" <arnd@arndb.de>,
"Krzysztof Kozlowski" <krzk@kernel.org>,
"Peter Griffin" <peter.griffin@linaro.org>,
"Alim Akhtar" <alim.akhtar@samsung.com>,
"Robert Baldyga" <r.baldyga@samsung.com>,
"Thomas Abraham" <thomas.abraham@linaro.org>,
"Kukjin Kim" <kgene.kim@samsung.com>,
"Patrice Chotard" <patrice.chotard@foss.st.com>,
"Srinivas Kandagatla" <srini@kernel.org>,
"Maxime Coquelin" <mcoquelin.stm32@gmail.com>,
"Alexandre Torgue" <alexandre.torgue@foss.st.com>,
"Andy Shevchenko" <andy.shevchenko@gmail.com>,
"Vladimir Zapolskiy" <vladimir_zapolskiy@mentor.com>,
"Al Cooper" <alcooperx@gmail.com>,
linux-kernel@vger.kernel.org, linux-serial@vger.kernel.org,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
stable <stable@kernel.org>
Subject: [PATCH 21/24] serial: samsung: don't leak the tty on an RX IRQ
Date: Tue, 27 Oct 2026 12:06:47 +0100 [thread overview]
Message-ID: <20261027-tty-llm-v1-21-99b0202ae546@linuxfoundation.org> (raw)
In-Reply-To: <20261027-tty-llm-v1-0-99b0202ae546@linuxfoundation.org>
From: Josef Bacik <josef@toxicpanda.com>
s3c24xx_serial_rx_chars_dma() starts by taking a reference to the tty.
If the interrupt is not a receive timeout, it switches the port from PIO
back to DMA and leaves through the "finish" label, which does not drop
the reference.
A port with RX DMA changes to PIO on every receive timeout, that is at
the end of every burst of data, and comes back this way when the next
burst starts. So each burst takes a reference which is never dropped,
and the tty structure is not freed when the port is closed for the last
time.
Drop the reference on both paths.
Fixes: b543c301c2c5 ("serial: samsung: add DMA support for RX")
Cc: stable <stable@kernel.org>
Cc: Krzysztof Kozlowski <krzk@kernel.org>
Cc: Peter Griffin <peter.griffin@linaro.org>
Cc: Alim Akhtar <alim.akhtar@samsung.com>
Cc: Jiri Slaby <jirislaby@kernel.org>
Cc: Robert Baldyga <r.baldyga@samsung.com>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/tty/serial/samsung_tty.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/tty/serial/samsung_tty.c b/drivers/tty/serial/samsung_tty.c
index 640f85e2d636..c9a870a8d155 100644
--- a/drivers/tty/serial/samsung_tty.c
+++ b/drivers/tty/serial/samsung_tty.c
@@ -736,14 +736,13 @@ static irqreturn_t s3c24xx_serial_rx_chars_dma(struct s3c24xx_uart_port *ourport
s3c24xx_serial_rx_drain_fifo(ourport);
- if (tty) {
+ if (tty)
tty_flip_buffer_push(t);
- tty_kref_put(tty);
- }
wr_regl(port, S3C2410_UTRSTAT, S3C2410_UTRSTAT_TIMEOUT);
finish:
+ tty_kref_put(tty);
uart_port_unlock(port);
return IRQ_HANDLED;
--
2.56.0
next prev parent reply other threads:[~2026-10-27 11:07 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-27 11:06 [PATCH 00/24] tty/serial: a bunch of llm-found fixes Greg Kroah-Hartman
2026-10-27 11:06 ` [PATCH 01/24] vt: serialise the producers of the flip buffer Greg Kroah-Hartman
2026-10-27 11:06 ` [PATCH 02/24] serial: core: respect runtime PM when sending x_char Greg Kroah-Hartman
2026-10-27 11:06 ` [PATCH 03/24] serial: 8250: don't wait for the em485 timers locked Greg Kroah-Hartman
2026-10-27 11:39 ` Ilpo Järvinen
2026-10-27 11:06 ` [PATCH 04/24] serial: 8250: don't report a wakeup to a closed tty Greg Kroah-Hartman
2026-10-27 11:43 ` Ilpo Järvinen
2026-10-27 11:06 ` [PATCH 05/24] serial: 8250: clear subdriver state on port unregister Greg Kroah-Hartman
2026-10-27 11:16 ` Jiri Slaby
2026-10-27 15:28 ` James Hilliard
2026-10-27 11:06 ` [PATCH 06/24] serial: 8250: add bounds check for line array in setup_serial() Greg Kroah-Hartman
2026-10-27 11:57 ` Ilpo Järvinen
2026-10-27 11:06 ` [PATCH 07/24] serial: 8250: hold hash_mutex across irq_info lookup and linking Greg Kroah-Hartman
2026-10-27 12:00 ` Ilpo Järvinen
2026-10-27 11:06 ` [PATCH 08/24] serial: 8250: cancel overrun backoff work on port shutdown and unregister Greg Kroah-Hartman
2026-10-27 12:15 ` Ilpo Järvinen
2026-10-27 11:06 ` [PATCH 09/24] serial: 8250: 8250_bcm7271: fix DMA address truncation to 32 bits Greg Kroah-Hartman
2026-10-27 12:18 ` Ilpo Järvinen
2026-10-27 15:10 ` Andy Shevchenko
2026-10-27 16:41 ` Florian Fainelli
2026-10-27 17:14 ` Andy Shevchenko
2026-10-27 17:19 ` Florian Fainelli
2026-10-27 18:37 ` Arnd Bergmann
2026-10-27 11:06 ` [PATCH 10/24] serial: 8250: pericom: validate port offset against BAR length Greg Kroah-Hartman
2026-10-27 15:13 ` Andy Shevchenko
2026-10-27 11:06 ` [PATCH 11/24] serial: 8250: cap OxSemi Tornado UART count against BAR size Greg Kroah-Hartman
2026-10-27 11:23 ` Jiri Slaby
2026-10-27 11:33 ` Greg Kroah-Hartman
2026-10-27 12:24 ` Ilpo Järvinen
2026-10-27 14:29 ` Maciej W. Rozycki
2026-10-27 15:23 ` Andy Shevchenko
2026-10-27 11:06 ` [PATCH 12/24] serial: 8250: dfl: add bounds check for device-provided regshift Greg Kroah-Hartman
2026-10-27 15:36 ` Andy Shevchenko
2026-10-27 11:06 ` [PATCH 13/24] serial: 8250: dfl: validate MMIO resource size and regshift Greg Kroah-Hartman
2026-10-27 12:30 ` Ilpo Järvinen
2026-10-27 15:38 ` Andy Shevchenko
2026-10-27 11:06 ` [PATCH 14/24] serial: 8250: ioc3: store registered line number in driver data Greg Kroah-Hartman
2026-10-27 12:38 ` Ilpo Järvinen
2026-10-27 13:10 ` Greg Kroah-Hartman
2026-10-27 11:06 ` [PATCH 15/24] serial: 8250: omap: acquire rx_dma_lock in DMA completion callback Greg Kroah-Hartman
2026-10-27 12:52 ` Ilpo Järvinen
2026-10-27 11:06 ` [PATCH 16/24] serial: 8250_lpss: don't divide by 0 above 6.25 Mbaud Greg Kroah-Hartman
2026-10-27 11:06 ` [PATCH 17/24] serial: 8250_mxpcie: handle hangup during break Greg Kroah-Hartman
2026-10-27 11:06 ` [PATCH 18/24] serial: fsl_lpuart: fix tty ref of wakeup event Greg Kroah-Hartman
2026-10-27 11:06 ` [PATCH 19/24] serial: imx: fix the tty reference of the " Greg Kroah-Hartman
2026-10-27 11:06 ` [PATCH 20/24] serial: rda: free the interrupt on shutdown Greg Kroah-Hartman
2026-10-27 12:38 ` Manivannan Sadhasivam
2026-10-27 11:06 ` Greg Kroah-Hartman [this message]
2026-10-27 11:06 ` [PATCH 22/24] serial: samsung: put the previous baud clock Greg Kroah-Hartman
2026-10-27 11:06 ` [PATCH 23/24] serial: st-asc: don't report a wakeup to a closed tty Greg Kroah-Hartman
2026-10-27 15:51 ` Andy Shevchenko
2026-10-27 11:06 ` [PATCH 24/24] serial: stm32: " Greg Kroah-Hartman
2026-10-27 13:02 ` Ilpo Järvinen
2026-10-27 15:06 ` [PATCH 00/24] tty/serial: a bunch of llm-found fixes Andy Shevchenko
2026-10-27 15:50 ` Greg Kroah-Hartman
2026-10-27 16:32 ` Andy Shevchenko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261027-tty-llm-v1-21-99b0202ae546@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=Frank.Li@nxp.com \
--cc=afaerber@suse.de \
--cc=alcooperx@gmail.com \
--cc=alexandre.torgue@foss.st.com \
--cc=alim.akhtar@samsung.com \
--cc=andriy.shevchenko@linux.intel.com \
--cc=andy.shevchenko@gmail.com \
--cc=arnd@arndb.de \
--cc=crescentcy.hsieh@moxa.com \
--cc=f.fainelli@gmail.com \
--cc=festevam@gmail.com \
--cc=heikki.krogerus@linux.intel.com \
--cc=ilpo.jarvinen@linux.intel.com \
--cc=jirislaby@kernel.org \
--cc=josef@toxicpanda.com \
--cc=kernel@pengutronix.de \
--cc=kgene.kim@samsung.com \
--cc=krzk@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=linux@joshua.hu \
--cc=mani@kernel.org \
--cc=mason@kernel.org \
--cc=mcoquelin.stm32@gmail.com \
--cc=olof@lixom.net \
--cc=patrice.chotard@foss.st.com \
--cc=peter.griffin@linaro.org \
--cc=peter@hurleysoftware.com \
--cc=r.baldyga@samsung.com \
--cc=rgc@hms.se \
--cc=s.hauer@pengutronix.de \
--cc=sherry.sun@nxp.com \
--cc=srini@kernel.org \
--cc=stable@kernel.org \
--cc=thomas.abraham@linaro.org \
--cc=tony@atomide.com \
--cc=vladimir_zapolskiy@mentor.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®