Hi, * Steven Price <steven.price@xxxxxxx> [230601 10:04]: > I haven't studied this change in detail, but I assume the bug is that > serial_base_port_device_remove() shouldn't be dropping port_mutex. The > below hack gets my board booting again. You're right. I wonder how I managed to miss that.. Care to post a proper fix for this or do you want me to post it? > Thanks, > > Steve > > Hack fix: > ----8<---- > diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c > index 29bd5ede0b25..044e4853341a 100644 > --- a/drivers/tty/serial/serial_core.c > +++ b/drivers/tty/serial/serial_core.c > @@ -3234,8 +3234,7 @@ static void serial_core_remove_one_port(struct uart_driver *drv, > wait_event(state->remove_wait, !atomic_read(&state->refcount)); > state->uart_port = NULL; > mutex_unlock(&port->mutex); > -out: > - mutex_unlock(&port_mutex); > +out:; > } Seems you can remove out here and just do a return earlier instead of goto. Regards, Tony