From: Jiri Slaby <jirislaby@kernel.org>
To: James Hilliard <james.hilliard1@gmail.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Crescent Hsieh <crescentcy.hsieh@moxa.com>
Cc: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>,
"Andy Shevchenko" <andriy.shevchenko@linux.intel.com>,
linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] serial: 8250: clear RX trigger callbacks when removing a port
Date: Tue, 27 Oct 2026 07:09:05 +0100 [thread overview]
Message-ID: <53624662-e94e-4fcb-9902-7fa4143c7689@kernel.org> (raw)
In-Reply-To: <20261024-submit-serial-8250-rxtrig-lifetime-v1-v1-1-731b78d5003d@gmail.com>
On 24. 10. 26, 22:05, James Hilliard wrote:
> serial8250_unregister_port() removes the device supplied by a driver and
> normally re-registers the persistent slot as an unknown legacy port. The
> slot retains its RX trigger callbacks and sysfs attribute group, so the
> replacement rx_trig_bytes attribute can still call the removed driver's
> code. Unloading that driver leaves the callbacks pointing into freed
> module text.
>
> Clear both callbacks after uart_remove_one_port() has drained the old
> sysfs users and before registering the fallback port. Its RX trigger
> attribute then uses the generic handlers, which reject a port without
> FIFO capabilities.
>
> Also copy the callbacks unconditionally during registration. A replacement
> port without custom handlers must use the generic implementation instead
> of inheriting callbacks from the previous owner of the slot.
I don't understand why this is a problem only for the two callbacks.
Care to elaborate?
> Fixes: 8a6c543cf8b3 ("serial: 8250: allow UART drivers to override rx_trig_bytes handling")
> Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
> ---
> drivers/tty/serial/8250/8250_core.c | 9 +++++----
> 1 file changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c
> index 42319843cb5b..c638e10c43e2 100644
> --- a/drivers/tty/serial/8250/8250_core.c
> +++ b/drivers/tty/serial/8250/8250_core.c
> @@ -830,10 +830,8 @@ static int __serial8250_register_8250_port(struct uart_8250_port *uart,
> uart->port.get_divisor = up->port.get_divisor;
> if (up->port.set_divisor)
> uart->port.set_divisor = up->port.set_divisor;
> - if (up->port.get_rxtrig)
> - uart->port.get_rxtrig = up->port.get_rxtrig;
> - if (up->port.set_rxtrig)
> - uart->port.set_rxtrig = up->port.set_rxtrig;
> + uart->port.get_rxtrig = up->port.get_rxtrig;
> + uart->port.set_rxtrig = up->port.set_rxtrig;
> if (up->port.startup)
> uart->port.startup = up->port.startup;
> if (up->port.shutdown)
> @@ -953,6 +951,9 @@ void serial8250_unregister_port(struct uart_8250_port *uart)
> }
>
> uart_remove_one_port(&serial8250_reg, &uart->port);
> + /* The fallback port must use the generic RX trigger handlers. */
> + uart->port.get_rxtrig = NULL;
> + uart->port.set_rxtrig = NULL;
> if (serial8250_isa_devs) {
> uart->port.flags &= ~UPF_BOOT_AUTOCONF;
> uart->port.type = PORT_UNKNOWN;
thanks,
--
js
suse labs
next prev parent reply other threads:[~2026-10-27 6:09 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-24 20:05 [PATCH] serial: 8250: clear RX trigger callbacks when removing a port James Hilliard
2026-10-24 20:23 ` sashiko-bot
2026-10-27 6:09 ` Jiri Slaby [this message]
2026-10-27 6:32 ` James Hilliard
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=53624662-e94e-4fcb-9902-7fa4143c7689@kernel.org \
--to=jirislaby@kernel.org \
--cc=andriy.shevchenko@linux.intel.com \
--cc=crescentcy.hsieh@moxa.com \
--cc=gregkh@linuxfoundation.org \
--cc=ilpo.jarvinen@linux.intel.com \
--cc=james.hilliard1@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.