Date: Sun, 12 Apr 2026 13:44:23 +0000 From: Kyle Evans <kevans@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Abdelkader Boudih <freebsd@seuros.com> Subject: git: 05b84d640274 - stable/14 - uart: fix sleeping while holding mutex in uart_tty_detach() Message-ID: <69dba1b7.43492.4e082988@gitrepo.freebsd.org>
index | next in thread | raw e-mail
The branch stable/14 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=05b84d64027451b298c56025eed11bf047be234d commit 05b84d64027451b298c56025eed11bf047be234d Author: Abdelkader Boudih <freebsd@seuros.com> AuthorDate: 2026-02-03 03:21:43 +0000 Commit: Kyle Evans <kevans@FreeBSD.org> CommitDate: 2026-04-12 13:43:43 +0000 uart: fix sleeping while holding mutex in uart_tty_detach() Move swi_remove() call before acquiring the tty lock. swi_remove() calls intr_event_remove_handler() which may sleep via msleep(), causing a lock order violation when called with the tty mutex held. The software interrupt handler removal operates on the interrupt event structure independently and does not require the tty lock. This matches the pattern used in other drivers such as tcp_hpts.c where swi_remove() is called without holding other locks. Reviewed by: imp, kevans (cherry picked from commit ed3a2469a71e0ef48cf8e636c35e64a011756da3) --- sys/dev/uart/uart_tty.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sys/dev/uart/uart_tty.c b/sys/dev/uart/uart_tty.c index 736c756322a4..5a86c7325429 100644 --- a/sys/dev/uart/uart_tty.c +++ b/sys/dev/uart/uart_tty.c @@ -448,8 +448,9 @@ uart_tty_detach(struct uart_softc *sc) tp = sc->sc_u.u_tty.tp; - tty_lock(tp); swi_remove(sc->sc_softih); + + tty_lock(tp); tty_rel_gone(tp); return (0);home | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69dba1b7.43492.4e082988>
